diff --git a/package-lock.json b/package-lock.json index b23943c0..ae79c6ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,8 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-intl": "^5.20.2", - "tinode-sdk": "^0.20.2" + "tinode-sdk": "^0.20.2", + "ts-ebml": "^2.0.2" }, "devDependencies": { "@babel/core": "^7.14.5", @@ -50,7 +51,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, "dependencies": { "@babel/highlight": "^7.18.6" }, @@ -415,7 +415,6 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -462,7 +461,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -2852,11 +2850,21 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + }, "node_modules/@types/node": { "version": "14.18.33", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==" }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -3286,7 +3294,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -3328,6 +3335,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha512-5mO7DX4CbJzp9zjaFXusQQ4tzKJARjNB1Ih1pVBi8wkbmXy/xzIDgEMXxWePLzt2OdFwaxfneIlT1nCiXubrPQ==" + }, "node_modules/babel-loader": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", @@ -3549,6 +3569,25 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -3622,12 +3661,82 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/camelcase": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", + "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-8.0.2.tgz", + "integrity": "sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==", + "dependencies": { + "camelcase": "^7.0.0", + "map-obj": "^4.3.0", + "quick-lru": "^6.1.1", + "type-fest": "^2.13.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -3660,7 +3769,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -3746,7 +3854,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -3754,8 +3861,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/colord": { "version": "2.9.3", @@ -3890,6 +3996,11 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "node_modules/crc": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz", + "integrity": "sha512-H21TaZQyic++ilBStWHntVpS2STWO37tzE0w0P5iAY1ntaPVtlZ3E6FcwltyZa6MYrEbKMxjEwXh3fBHlW8Qqw==" + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -4074,6 +4185,21 @@ "node": ">=0.10.0" } }, + "node_modules/dateformat": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.11.tgz", + "integrity": "sha512-5zcI+Qoul0QgiCcjzsobs9G1c+vHCNaYB2NGa57ZbVnP7bZeKJJgoM/K+I/obaHAmyEL0J8hJafbQ+HFSZnzZA==", + "dependencies": { + "get-stdin": "*", + "meow": "*" + }, + "bin": { + "dateformat": "bin/cli.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -4091,6 +4217,48 @@ } } }, + "node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/dependency-graph": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", @@ -4167,6 +4335,33 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/ebml": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/ebml/-/ebml-2.2.4.tgz", + "integrity": "sha512-wInOW1ASaWDJgatWqgZQ3RCXXYCLRMDkW4yA/HJvDi5auKbwyRQZfsQQ3aTVIeIo537cVUsD0rvNqKq7alKxtA==", + "dependencies": { + "buffers": "^0.1.1", + "debug": "~3.1.0" + } + }, + "node_modules/ebml-block": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ebml-block/-/ebml-block-1.1.2.tgz", + "integrity": "sha512-HgNlIsRFP6D9VKU5atCeHRJY7XkJP8bOe8yEhd8NB7B3b4++VWTyauz6g650iiPmLfPLGlVpoJmGSgMfXDYusg==" + }, + "node_modules/ebml/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/ebml/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", @@ -4221,6 +4416,14 @@ "node": ">=4" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", @@ -4239,7 +4442,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -4455,6 +4657,25 @@ "@firebase/util": "1.7.3" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -4491,8 +4712,7 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/gensync": { "version": "1.0.0-beta.2", @@ -4515,7 +4735,6 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "dev": true, "engines": { "node": ">=12" }, @@ -4595,11 +4814,18 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "engines": { + "node": ">=6" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -4611,7 +4837,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -4624,6 +4849,17 @@ "react-is": "^16.7.0" } }, + "node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/http-parser-js": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", @@ -4634,6 +4870,25 @@ "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -4667,6 +4922,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4681,6 +4947,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/int64-buffer": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", + "integrity": "sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==" + }, "node_modules/interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -4701,6 +4972,11 @@ "tslib": "^2.1.0" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -4717,7 +4993,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -4763,6 +5038,14 @@ "node": ">=0.12.0" } }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4853,8 +5136,7 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -4922,7 +5204,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4944,6 +5225,11 @@ "node": ">=10" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -5031,6 +5317,14 @@ "node": ">=8" } }, + "node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "engines": { + "node": ">=12" + } + }, "node_modules/magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -5055,12 +5349,85 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/matroska": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/matroska/-/matroska-2.2.5.tgz", + "integrity": "sha512-6+yf536Aofg8jVWQcLl/z2v8PXZMkjUs080t+Nyz++BZSJ+0U6c2RBudXqKT6DrV89DdNkklyHhHlWerpS06hw==", + "dependencies": { + "async": "1.0.0", + "crc": "3.2.1", + "dateformat": "1.0.11", + "debug": "^2.6.9", + "follow-redirects": "^1.14.9", + "mime": "^1.6.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/matroska/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/matroska/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, + "node_modules/meow": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-11.0.0.tgz", + "integrity": "sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==", + "dependencies": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^8.0.2", + "decamelize": "^6.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^4.0.1", + "read-pkg-up": "^9.1.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^3.1.0", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -5089,6 +5456,17 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -5110,6 +5488,14 @@ "node": ">= 0.6" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", @@ -5122,6 +5508,19 @@ "node": ">=10" } }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -5183,6 +5582,45 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, + "node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -5273,6 +5711,23 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5988,6 +6443,17 @@ } ] }, + "node_modules/quick-lru": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.1.tgz", + "integrity": "sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -6062,6 +6528,176 @@ "pify": "^2.3.0" } }, + "node_modules/read-pkg": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", + "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", + "dependencies": { + "find-up": "^6.3.0", + "read-pkg": "^7.1.0", + "type-fest": "^2.5.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.1.1.tgz", + "integrity": "sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-pkg/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -6100,6 +6736,21 @@ "node": ">= 0.10" } }, + "node_modules/redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "dependencies": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -6471,6 +7122,34 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" + }, "node_modules/stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -6510,6 +7189,20 @@ "node": ">=8" } }, + "node_modules/strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dependencies": { + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/stylehacks": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", @@ -6530,7 +7223,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -6713,11 +7405,63 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "node_modules/trim-newlines": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", + "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-ebml": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ts-ebml/-/ts-ebml-2.0.2.tgz", + "integrity": "sha512-V/HdlCn3FITQrFHQlVE02XtfMiRLab2QB/YOCfkbJWqiFYG/j5v7gHKV+wem6g0PD6/uxXs5oxMQfDXILmts/Q==", + "dependencies": { + "buffer": "^5.0.7", + "commander": "^2.11.0", + "ebml": "^2.2.1", + "ebml-block": "^1.1.0", + "events": "^1.1.1", + "int64-buffer": "^0.1.9", + "matroska": "^2.2.3" + }, + "bin": { + "ts-ebml": "lib/cli.js" + } + }, + "node_modules/ts-ebml/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/ts-ebml/node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/tslib": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, + "node_modules/type-fest": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.3.0.tgz", + "integrity": "sha512-gezeeOIZyQLGW5uuCeEnXF1aXmtt2afKspXz3YqoOcZ3l/YMJq1pujvgT+cz/Nw1O/7q/kSav5fihJHsC/AOUg==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typescript": { "version": "4.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", @@ -6820,6 +7564,15 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "node_modules/vue": { "version": "3.2.45", "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", @@ -7130,6 +7883,11 @@ "node": ">=10" } }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", @@ -7163,6 +7921,17 @@ "engines": { "node": ">=10" } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { @@ -7180,7 +7949,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, "requires": { "@babel/highlight": "^7.18.6" } @@ -7452,8 +8220,7 @@ "@babel/helper-validator-identifier": { "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" }, "@babel/helper-validator-option": { "version": "7.18.6", @@ -7488,7 +8255,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -9287,11 +10053,21 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + }, "@types/node": { "version": "14.18.33", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==" }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, "@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -9680,7 +10456,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -9707,6 +10482,16 @@ "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", "dev": true }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" + }, + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha512-5mO7DX4CbJzp9zjaFXusQQ4tzKJARjNB1Ih1pVBi8wkbmXy/xzIDgEMXxWePLzt2OdFwaxfneIlT1nCiXubrPQ==" + }, "babel-loader": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", @@ -9885,6 +10670,11 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -9933,12 +10723,49 @@ "update-browserslist-db": "^1.0.9" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" + }, + "camelcase": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", + "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==" + }, + "camelcase-keys": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-8.0.2.tgz", + "integrity": "sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==", + "requires": { + "camelcase": "^7.0.0", + "map-obj": "^4.3.0", + "quick-lru": "^6.1.1", + "type-fest": "^2.13.0" + }, + "dependencies": { + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + } + } + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -9961,7 +10788,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -10026,7 +10852,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -10034,8 +10859,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "colord": { "version": "2.9.3", @@ -10141,6 +10965,11 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "crc": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz", + "integrity": "sha512-H21TaZQyic++ilBStWHntVpS2STWO37tzE0w0P5iAY1ntaPVtlZ3E6FcwltyZa6MYrEbKMxjEwXh3fBHlW8Qqw==" + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -10272,6 +11101,15 @@ "array-find-index": "^1.0.1" } }, + "dateformat": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.11.tgz", + "integrity": "sha512-5zcI+Qoul0QgiCcjzsobs9G1c+vHCNaYB2NGa57ZbVnP7bZeKJJgoM/K+I/obaHAmyEL0J8hJafbQ+HFSZnzZA==", + "requires": { + "get-stdin": "*", + "meow": "*" + } + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -10281,6 +11119,32 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==" + }, + "decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" + } + } + }, "dependency-graph": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", @@ -10333,6 +11197,35 @@ "domhandler": "^4.2.0" } }, + "ebml": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/ebml/-/ebml-2.2.4.tgz", + "integrity": "sha512-wInOW1ASaWDJgatWqgZQ3RCXXYCLRMDkW4yA/HJvDi5auKbwyRQZfsQQ3aTVIeIo537cVUsD0rvNqKq7alKxtA==", + "requires": { + "buffers": "^0.1.1", + "debug": "~3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "ebml-block": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ebml-block/-/ebml-block-1.1.2.tgz", + "integrity": "sha512-HgNlIsRFP6D9VKU5atCeHRJY7XkJP8bOe8yEhd8NB7B3b4++VWTyauz6g650iiPmLfPLGlVpoJmGSgMfXDYusg==" + }, "electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", @@ -10372,6 +11265,14 @@ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", @@ -10386,8 +11287,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint-scope": { "version": "5.1.1", @@ -10562,6 +11462,11 @@ "@firebase/util": "1.7.3" } }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, "fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -10588,8 +11493,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "gensync": { "version": "1.0.0-beta.2", @@ -10605,8 +11509,7 @@ "get-stdin": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "dev": true + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==" }, "glob": { "version": "8.0.3", @@ -10662,11 +11565,15 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -10674,8 +11581,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "hoist-non-react-statics": { "version": "3.3.2", @@ -10685,6 +11591,14 @@ "react-is": "^16.7.0" } }, + "hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "requires": { + "lru-cache": "^7.5.1" + } + }, "http-parser-js": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", @@ -10695,6 +11609,11 @@ "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -10716,6 +11635,11 @@ "resolve-cwd": "^3.0.0" } }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -10730,6 +11654,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "int64-buffer": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", + "integrity": "sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==" + }, "interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -10747,6 +11676,11 @@ "tslib": "^2.1.0" } }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -10760,7 +11694,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -10791,6 +11724,11 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -10859,8 +11797,7 @@ "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "json-schema-traverse": { "version": "0.4.1", @@ -10913,8 +11850,7 @@ "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "lie": { "version": "3.3.0", @@ -10930,6 +11866,11 @@ "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", "dev": true }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -11002,6 +11943,11 @@ "signal-exit": "^3.0.2" } }, + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==" + }, "magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -11020,12 +11966,71 @@ "semver": "^6.0.0" } }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + }, + "matroska": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/matroska/-/matroska-2.2.5.tgz", + "integrity": "sha512-6+yf536Aofg8jVWQcLl/z2v8PXZMkjUs080t+Nyz++BZSJ+0U6c2RBudXqKT6DrV89DdNkklyHhHlWerpS06hw==", + "requires": { + "async": "1.0.0", + "crc": "3.2.1", + "dateformat": "1.0.11", + "debug": "^2.6.9", + "follow-redirects": "^1.14.9", + "mime": "^1.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, "mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, + "meow": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-11.0.0.tgz", + "integrity": "sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==", + "requires": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^8.0.2", + "decamelize": "^6.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^4.0.1", + "read-pkg-up": "^9.1.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^3.1.0", + "yargs-parser": "^21.1.1" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + } + } + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -11048,6 +12053,11 @@ "picomatch": "^2.3.1" } }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -11063,6 +12073,11 @@ "mime-db": "1.52.0" } }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, "minimatch": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", @@ -11072,6 +12087,16 @@ "brace-expansion": "^2.0.1" } }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -11110,6 +12135,35 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, + "normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "requires": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -11173,6 +12227,17 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -11624,6 +12689,11 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "quick-lru": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.1.tgz", + "integrity": "sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==" + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -11683,6 +12753,114 @@ "pify": "^2.3.0" } }, + "read-pkg": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "requires": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + } + } + }, + "read-pkg-up": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", + "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", + "requires": { + "find-up": "^6.3.0", + "read-pkg": "^7.1.0", + "type-fest": "^2.5.0" + }, + "dependencies": { + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "locate-path": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.1.1.tgz", + "integrity": "sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==", + "requires": { + "p-locate": "^6.0.0" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==" + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + } + } + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -11715,6 +12893,15 @@ "resolve": "^1.9.0" } }, + "redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "requires": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + } + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -11993,6 +13180,34 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" + }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -12025,6 +13240,14 @@ "ansi-regex": "^5.0.1" } }, + "strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "requires": { + "min-indent": "^1.0.1" + } + }, "stylehacks": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", @@ -12039,7 +13262,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -12164,11 +13386,47 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "trim-newlines": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", + "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==" + }, + "ts-ebml": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ts-ebml/-/ts-ebml-2.0.2.tgz", + "integrity": "sha512-V/HdlCn3FITQrFHQlVE02XtfMiRLab2QB/YOCfkbJWqiFYG/j5v7gHKV+wem6g0PD6/uxXs5oxMQfDXILmts/Q==", + "requires": { + "buffer": "^5.0.7", + "commander": "^2.11.0", + "ebml": "^2.2.1", + "ebml-block": "^1.1.0", + "events": "^1.1.1", + "int64-buffer": "^0.1.9", + "matroska": "^2.2.3" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==" + } + } + }, "tslib": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, + "type-fest": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.3.0.tgz", + "integrity": "sha512-gezeeOIZyQLGW5uuCeEnXF1aXmtt2afKspXz3YqoOcZ3l/YMJq1pujvgT+cz/Nw1O/7q/kSav5fihJHsC/AOUg==" + }, "typescript": { "version": "4.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", @@ -12233,6 +13491,15 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "vue": { "version": "3.2.45", "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", @@ -12444,6 +13711,11 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", @@ -12468,6 +13740,11 @@ "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==" } } } diff --git a/package.json b/package.json index ec225f51..76310fb9 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,6 @@ "name": "tinode-webapp", "description": "Tinode messenger for the web", "version": "0.20.2", - "repository": { "type": "git", "url": "https://github.com/tinode/example-react-js.git" @@ -71,7 +70,8 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-intl": "^5.20.2", - "tinode-sdk": "^0.20.2" + "tinode-sdk": "^0.20.2", + "ts-ebml": "^2.0.2" }, "devDependencies": { "@babel/core": "^7.14.5", diff --git a/src/widgets/audio-recorder.jsx b/src/widgets/audio-recorder.jsx index a2512a19..40bce19f 100644 --- a/src/widgets/audio-recorder.jsx +++ b/src/widgets/audio-recorder.jsx @@ -5,6 +5,7 @@ import React from 'react'; import AudioPlayer from './audio-player.jsx'; // Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=642012 // import fixWebmDuration from 'fix-webm-duration'; +import * as ebml from 'ts-ebml'; import { intArrayToBase64 } from '../lib/blob-helpers.js' import { secondsToTime } from '../lib/strformat'; @@ -269,12 +270,38 @@ export default class AudioRecorder extends React.PureComponent { // Obtain data in a form sutable for sending or playing back. // If duration is valid, apply fix for Chrome's WebM duration bug. getRecording(mimeType, duration) { - let blob = new Blob(this.audioChunks, {type: mimeType || AUDIO_MIME_TYPE}); + mimeType = mimeType || AUDIO_MIME_TYPE; + let blob = new Blob(this.audioChunks, {type: mimeType}); + return this.tempFixMetadata(blob, mimeType) + .then(fixedBlob => { blob = fixedBlob; return fixedBlob.arrayBuffer(); }) + .then(arrayBuff => this.audioContext.decodeAudioData(arrayBuff)) + .then(decoded => this.createPreview(decoded)) + .then(preview => ({url: window.URL.createObjectURL(blob), preview: intArrayToBase64(preview)})); + /* return (duration > 0 ? ysFixWebmDuration(blob, duration, {logger: false}) : Promise.resolve(blob)) .then(fixedBlob => { blob = fixedBlob; return fixedBlob.arrayBuffer(); }) .then(arrayBuff => this.audioContext.decodeAudioData(arrayBuff)) .then(decoded => this.createPreview(decoded)) .then(preview => ({url: window.URL.createObjectURL(blob), preview: intArrayToBase64(preview)})); + */ + } + + tempFixMetadata(blob, mimeType) { + const decoder = new ebml.Decoder(); + const reader = new ebml.Reader(); + reader.logging = true; + reader.logGroup = "Raw WebM file"; + reader.drop_default_duration = false; + let webmBuf; + blob.arrayBuffer() + .then(buf => { webmBuf = buf; return decoder.decode(buf); }) + .then(elms => { + elms.forEach(elm => reader.read(elm)) + reader.stop(); + const fixedMetadataBuf = ebml.tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues); + const body = webmBuf.slice(reader.metadataSize); + return new Blob([fixedMetadataBuf, body], {type: mimeType}); + }); } // Preview must be calculated at the source: Chrome does not allow background AudioContext. diff --git a/umd/index.dev.js b/umd/index.dev.js index f047d538..69493fbe 100644 --- a/umd/index.dev.js +++ b/umd/index.dev.js @@ -1,5 +1,4 @@ /******/ (() => { // webpackBootstrap -/******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "./node_modules/@firebase/util/dist/index.esm2017.js": @@ -8,6 +7,7 @@ \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "CONSTANTS": () => (/* binding */ CONSTANTS), @@ -2153,6 +2153,7 @@ function getModularInstance(service) { \***********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "API_KEY": () => (/* binding */ API_KEY), @@ -2271,6 +2272,7 @@ const LINK_TERMS_OF_SERVICE = 'https://tinode.co/terms.html'; \**************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "CALL_HEAD_STARTED": () => (/* binding */ CALL_HEAD_STARTED), @@ -2295,6 +2297,7 @@ const CALL_HEAD_STARTED = 'started'; \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "MIME_EXTENSIONS": () => (/* binding */ MIME_EXTENSIONS), @@ -2594,6 +2597,7 @@ function base64ToIntArray(b64) { \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "fullFormatter": () => (/* binding */ fullFormatter), @@ -3032,6 +3036,7 @@ function replyFormatter(style, data, values, key, stack) { \******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "detectServerAddress": () => (/* binding */ detectServerAddress), @@ -3074,6 +3079,7 @@ function isLocalHost() { \**********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ LocalStorageUtil) @@ -3108,6 +3114,7 @@ class LocalStorageUtil { \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ HashNavigation) @@ -3191,6 +3198,7 @@ class HashNavigation { \******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "bytesToHumanSize": () => (/* binding */ bytesToHumanSize), @@ -3286,6 +3294,7 @@ function idToColorClass(id, light, fg) { \**************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "arrayEqual": () => (/* binding */ arrayEqual), @@ -3494,6 +3503,7 @@ function clipStr(str, length) { \************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "PACKAGE_VERSION": () => (/* binding */ PACKAGE_VERSION) @@ -3510,6 +3520,7 @@ const PACKAGE_VERSION = "0.20.2"; \**********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ EditAccountView) @@ -3604,6 +3615,7 @@ class EditAccountView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -3823,6 +3835,7 @@ class AccSecurityView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Comp \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ AccSupportView) @@ -3938,6 +3951,7 @@ class AccSupportView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureC \*********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ AccountSettingsView) @@ -4094,6 +4108,7 @@ class AccountSettingsView extends (react__WEBPACK_IMPORTED_MODULE_0___default(). \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ ContactsView) @@ -4220,6 +4235,7 @@ class ContactsView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone \*******************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ CreateAccountView) @@ -4496,6 +4512,7 @@ class CreateAccountView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pu \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -5207,6 +5224,7 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) \**********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ LoginView) @@ -5342,6 +5360,7 @@ class LoginView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ LogoView) @@ -5394,6 +5413,7 @@ class LogoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompone \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -6654,6 +6674,7 @@ class MessagesView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -6831,6 +6852,7 @@ class NewTopicView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone \*******************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ PasswordResetView) @@ -6994,6 +7016,7 @@ class PasswordResetView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pu \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ SettingsView) @@ -7139,6 +7162,7 @@ class SettingsView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCom \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -7422,6 +7446,7 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo \**********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -9411,6 +9436,7 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -9572,6 +9598,7 @@ class ValidationView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureC \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ Alert) @@ -9625,6 +9652,7 @@ class Alert extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent) \************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ Attachment) @@ -9745,6 +9773,7 @@ class Attachment extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ AudioPlayer) @@ -9987,6 +10016,7 @@ class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ AudioRecorder) @@ -9994,9 +10024,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _audio_player_jsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./audio-player.jsx */ "./src/widgets/audio-player.jsx"); -/* harmony import */ var _lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/blob-helpers.js */ "./src/lib/blob-helpers.js"); -/* harmony import */ var _lib_strformat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/strformat */ "./src/lib/strformat.js"); -/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../config.js */ "./src/config.js"); +/* harmony import */ var ts_ebml__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ts-ebml */ "./node_modules/ts-ebml/lib/index.js"); +/* harmony import */ var _lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/blob-helpers.js */ "./src/lib/blob-helpers.js"); +/* harmony import */ var _lib_strformat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/strformat */ "./src/lib/strformat.js"); +/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../config.js */ "./src/config.js"); @@ -10086,17 +10117,17 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo window.requestAnimationFrame(drawFrame); const duration = this.durationMillis + (Date.now() - this.startedOn); this.setState({ - duration: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_3__.secondsToTime)(duration / 1000) + duration: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_4__.secondsToTime)(duration / 1000) }); - if (duration > _config_js__WEBPACK_IMPORTED_MODULE_4__.MAX_DURATION) { + if (duration > _config_js__WEBPACK_IMPORTED_MODULE_5__.MAX_DURATION) { this.startedOn = null; this.mediaRecorder.pause(); this.durationMillis += Date.now() - this.startedOn; this.setState({ enabled: false, recording: false, - duration: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_3__.secondsToTime)(this.durationMillis / 1000) + duration: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_4__.secondsToTime)(this.durationMillis / 1000) }); } @@ -10198,7 +10229,7 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo this.analyser.fftSize = BUFFER_SIZE; this.audioInput.connect(this.analyser); this.mediaRecorder.onstop = _ => { - if (this.durationMillis > _config_js__WEBPACK_IMPORTED_MODULE_4__.MIN_DURATION) { + if (this.durationMillis > _config_js__WEBPACK_IMPORTED_MODULE_5__.MIN_DURATION) { this.getRecording(this.mediaRecorder.mimeType, this.durationMillis).then(result => this.props.onFinished(result.url, result.preview, this.durationMillis)); } else { this.props.onDeleted(); @@ -10225,20 +10256,40 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo } getRecording(mimeType, duration) { + mimeType = mimeType || AUDIO_MIME_TYPE; let blob = new Blob(this.audioChunks, { - type: mimeType || AUDIO_MIME_TYPE + type: mimeType }); - return (duration > 0 ? ysFixWebmDuration(blob, duration, { - logger: false - }) : Promise.resolve(blob)).then(fixedBlob => { + return this.tempFixMetadata(blob, mimeType).then(fixedBlob => { blob = fixedBlob; return fixedBlob.arrayBuffer(); }).then(arrayBuff => this.audioContext.decodeAudioData(arrayBuff)).then(decoded => this.createPreview(decoded)).then(preview => ({ url: window.URL.createObjectURL(blob), - preview: (0,_lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_2__.intArrayToBase64)(preview) + preview: (0,_lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_3__.intArrayToBase64)(preview) })); } + tempFixMetadata(blob, mimeType) { + const decoder = new ts_ebml__WEBPACK_IMPORTED_MODULE_2__.Decoder(); + const reader = new ts_ebml__WEBPACK_IMPORTED_MODULE_2__.Reader(); + reader.logging = true; + reader.logGroup = "Raw WebM file"; + reader.drop_default_duration = false; + let webmBuf; + blob.arrayBuffer().then(buf => { + webmBuf = buf; + return decoder.decode(buf); + }).then(elms => { + elms.forEach(elm => reader.read(elm)); + reader.stop(); + const fixedMetadataBuf = ts_ebml__WEBPACK_IMPORTED_MODULE_2__.tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues); + const body = webmBuf.slice(reader.metadataSize); + return new Blob([fixedMetadataBuf, body], { + type: mimeType + }); + }); + } + createPreview(audio) { const data = audio.getChannelData(0); const viewLength = Math.min(data.length, VISUALIZATION_BARS); @@ -10315,6 +10366,7 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ AvatarCrop) @@ -10401,6 +10453,7 @@ class AvatarCrop extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompo \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ AvatarUpload) @@ -10491,6 +10544,7 @@ class AvatarUpload extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone \************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -10562,6 +10616,7 @@ class BadgeList extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompon \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ ButtonBack) @@ -10592,6 +10647,7 @@ class ButtonBack extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompo \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ CallIncoming) @@ -10752,6 +10808,7 @@ class CallIncoming extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ CallMessage) @@ -10845,6 +10902,7 @@ class CallMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp \************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -11277,6 +11335,7 @@ class CallPanel extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompon \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ CallStatus) @@ -11354,6 +11413,7 @@ class CallStatus extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompo \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -11569,6 +11629,7 @@ const ChatMessage = react__WEBPACK_IMPORTED_MODULE_0___default().forwardRef((pro \**********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ CheckBox) @@ -11630,6 +11691,7 @@ class CheckBox extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompone \************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ ChipInput) @@ -11787,6 +11849,7 @@ class ChipInput extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) \******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ Chip) @@ -11837,6 +11900,7 @@ class Chip extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent) \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -11881,6 +11945,7 @@ class ContactAction extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ ContactBadges) @@ -11928,6 +11993,7 @@ class ContactBadges extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -12086,6 +12152,7 @@ class ContactList extends (react__WEBPACK_IMPORTED_MODULE_0___default().Componen \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -12266,6 +12333,7 @@ class Contact extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) { \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -12767,6 +12835,7 @@ class ContextMenu extends (react__WEBPACK_IMPORTED_MODULE_0___default().Componen \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ Cropper) @@ -13018,6 +13087,7 @@ class Cropper extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) { \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ DocPreview) @@ -13111,6 +13181,7 @@ class DocPreview extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompo \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ ErrorPanel) @@ -13183,6 +13254,7 @@ class ErrorPanel extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompo \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ FileProgress) @@ -13234,6 +13306,7 @@ class FileProgress extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCom \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ ForwardDialog) @@ -13344,6 +13417,7 @@ class ForwardDialog extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compon \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -13593,6 +13667,7 @@ class GroupManager extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone \************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ GroupSubs) @@ -13660,6 +13735,7 @@ class GroupSubs extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ HostSelector) @@ -13736,6 +13812,7 @@ class HostSelector extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCom \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ ImagePreview) @@ -13870,6 +13947,7 @@ class ImagePreview extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCom \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ InPlaceEdit) @@ -14007,6 +14085,7 @@ class InPlaceEdit extends (react__WEBPACK_IMPORTED_MODULE_0___default().Componen \************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ Invitation) @@ -14086,6 +14165,7 @@ class Invitation extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompo \************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ LazyImage) @@ -14158,6 +14238,7 @@ class LazyImage extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompon \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ LetterTile) @@ -14219,6 +14300,7 @@ class LetterTile extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompo \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ LoadSpinner) @@ -14245,6 +14327,7 @@ class LoadSpinner extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ MenuCancel) @@ -14275,6 +14358,7 @@ class MenuCancel extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompo \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ MenuContacts) @@ -14313,6 +14397,7 @@ class MenuContacts extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCom \************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ MenuStart) @@ -14351,6 +14436,7 @@ class MenuStart extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompon \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ MetaMessage) @@ -14409,6 +14495,7 @@ class MetaMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -14504,6 +14591,7 @@ class NewTopicById extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCom \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ NewTopicGroup) @@ -14780,6 +14868,7 @@ class NewTopicGroup extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo \********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -15050,6 +15139,7 @@ class PermissionsEditor extends (react__WEBPACK_IMPORTED_MODULE_0___default().Co \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -15117,6 +15207,7 @@ class ReceivedMarker extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureC \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ SearchContacts) @@ -15214,6 +15305,7 @@ class SearchContacts extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureC \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -15528,6 +15620,7 @@ class SendMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ SideNavbar) @@ -15599,6 +15692,7 @@ class SideNavbar extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompo \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ TagManager) @@ -15801,6 +15895,7 @@ class TagManager extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ TopicCommon) @@ -16028,6 +16123,7 @@ class TopicCommon extends (react__WEBPACK_IMPORTED_MODULE_0___default().Componen \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ TopicDescEdit) @@ -16329,6 +16425,7 @@ class TopicDescEdit extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compon \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -16649,6 +16746,7 @@ class TopicSecurity extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ UnreadBadge) @@ -16674,6 +16772,7 @@ class UnreadBadge extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ UploadingImage) @@ -16712,6 +16811,7 @@ class UploadingImage extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureC \******************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ VisiblePassword) @@ -16803,6 +16903,2255 @@ class VisiblePassword extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure } } +/***/ }), + +/***/ "./node_modules/base64-js/index.js": +/*!*****************************************!*\ + !*** ./node_modules/base64-js/index.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function getLens (b64) { + var len = b64.length + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + + +/***/ }), + +/***/ "./node_modules/buffer/index.js": +/*!**************************************!*\ + !*** ./node_modules/buffer/index.js ***! + \**************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + + + +var base64 = __webpack_require__(/*! base64-js */ "./node_modules/base64-js/index.js") +var ieee754 = __webpack_require__(/*! ieee754 */ "./node_modules/ieee754/index.js") +var customInspectSymbol = + (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation + ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation + : null + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +var K_MAX_LENGTH = 0x7fffffff +exports.kMaxLength = K_MAX_LENGTH + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ) +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1) + var proto = { foo: function () { return 42 } } + Object.setPrototypeOf(proto, Uint8Array.prototype) + Object.setPrototypeOf(arr, proto) + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}) + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}) + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length) + Object.setPrototypeOf(buf, Buffer.prototype) + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayView(value) + } + + if (value == null) { + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof SharedArrayBuffer !== 'undefined' && + (isInstance(value, SharedArrayBuffer) || + (value && isInstance(value.buffer, SharedArrayBuffer)))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + var valueOf = value.valueOf && value.valueOf() + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + var b = fromObject(value) + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from( + value[Symbol.toPrimitive]('string'), encodingOrOffset, length + ) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +} + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype) +Object.setPrototypeOf(Buffer, Uint8Array) + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpreted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +} + +function allocUnsafe (size) { + assertSize(size) + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + var length = byteLength(string, encoding) | 0 + var buf = createBuffer(length) + + var actual = buf.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual) + } + + return buf +} + +function fromArrayLike (array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + var buf = createBuffer(length) + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255 + } + return buf +} + +function fromArrayView (arrayView) { + if (isInstance(arrayView, Uint8Array)) { + var copy = new Uint8Array(arrayView) + return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength) + } + return fromArrayLike(arrayView) +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + var buf + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array) + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset) + } else { + buf = new Uint8Array(array, byteOffset, length) + } + + // Return an augmented `Uint8Array` instance + Object.setPrototypeOf(buf, Buffer.prototype) + + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + var buf = createBuffer(len) + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len) + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +} + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (isInstance(buf, Uint8Array)) { + if (pos + buf.length > buffer.length) { + Buffer.from(buf).copy(buffer, pos) + } else { + Uint8Array.prototype.set.call( + buffer, + buf, + pos + ) + } + } else if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } else { + buf.copy(buffer, pos) + } + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + var len = string.length + var mustMatch = (arguments.length > 2 && arguments[2] === true) + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coercion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.toLocaleString = Buffer.prototype.toString + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() + if (this.length > max) str += ' ... ' + return '' +} +if (customInspectSymbol) { + Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength) + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [val], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + var strLen = string.length + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0 + if (isFinite(length)) { + length = length >>> 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + case 'latin1': + case 'binary': + return asciiWrite(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) + ? 4 + : (firstByte > 0xDF) + ? 3 + : (firstByte > 0xBF) + ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += hexSliceLookupTable[buf[i]] + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + // If bytes.length is odd, the last 8 bits must be ignored (same as node.js) + for (var i = 0; i < bytes.length - 1; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf = this.subarray(start, end) + // Return an augmented `Uint8Array` instance + Object.setPrototypeOf(newBuf, Buffer.prototype) + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUintLE = +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUintBE = +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUint8 = +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUint16LE = +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUint16BE = +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUint32LE = +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUint32BE = +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUintLE = +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUintBE = +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUint8 = +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeUint16LE = +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeUint16BE = +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeUint32LE = +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeUint32BE = +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end) + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code + } + } + } else if (typeof val === 'number') { + val = val & 255 + } else if (typeof val === 'boolean') { + val = Number(val) + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding) + var len = bytes.length + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0] + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +// Create lookup table for `toString('hex')` +// See: https://github.com/feross/buffer/issues/219 +var hexSliceLookupTable = (function () { + var alphabet = '0123456789abcdef' + var table = new Array(256) + for (var i = 0; i < 16; ++i) { + var i16 = i * 16 + for (var j = 0; j < 16; ++j) { + table[i16 + j] = alphabet[i] + alphabet[j] + } + } + return table +})() + + +/***/ }), + +/***/ "./node_modules/ebml-block/index.js": +/*!******************************************!*\ + !*** ./node_modules/ebml-block/index.js ***! + \******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var BufferReader = __webpack_require__(/*! ./lib/buffer-reader */ "./node_modules/ebml-block/lib/buffer-reader.js") + +var XIPH_LACING = 1 +var EBML_LACING = 3 +var FIXED_SIZE_LACING = 2 + +module.exports = function (buffer) { + var block = {} + var reader = new BufferReader(buffer) + + block.trackNumber = reader.nextUIntV() + block.timecode = reader.nextInt16BE() + + var flags = reader.nextUInt8() + + block.invisible = !!(flags & 0x8) + + // only valid for SimpleBlock + block.keyframe = !!(flags & 0x80) + block.discardable = !!(flags & 0x1) + + var lacing = (flags & 0x6) >> 1 + + block.frames = readLacedData(reader, lacing) + + return block +} + +function readLacedData (reader, lacing) { + if (!lacing) return [reader.nextBuffer()] + + var i, frameSize + var frames = [] + var framesNum = reader.nextUInt8() + 1 // number of frames + + if (lacing === FIXED_SIZE_LACING) { + // remaining data should be divisible by the number of frames + if (reader.length % framesNum !== 0) throw new Error('Fixed-Size Lacing Error') + + frameSize = reader.length / framesNum + for (i = 0; i < framesNum; i++) { + frames.push(reader.nextBuffer(frameSize)) + } + return frames + } + + var frameSizes = [] + + if (lacing === XIPH_LACING) { + for (i = 0; i < framesNum - 1; i++) { + var val + frameSize = 0 + do { + val = reader.nextUInt8() + frameSize += val + } while (val === 0xff) + frameSizes.push(frameSize) + } + } else if (lacing === EBML_LACING) { + // first frame + frameSize = reader.nextUIntV() + frameSizes.push(frameSize) + + // middle frames + for (i = 1; i < framesNum - 1; i++) { + frameSize += reader.nextIntV() + frameSizes.push(frameSize) + } + } + + for (i = 0; i < framesNum - 1; i++) { + frames.push(reader.nextBuffer(frameSizes[i])) + } + + // last frame (remaining buffer) + frames.push(reader.nextBuffer()) + + return frames +} + + +/***/ }), + +/***/ "./node_modules/ebml-block/lib/buffer-reader.js": +/*!******************************************************!*\ + !*** ./node_modules/ebml-block/lib/buffer-reader.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var vint = __webpack_require__(/*! ./vint */ "./node_modules/ebml-block/lib/vint.js") + +function BufferReader (buffer) { + this.buffer = buffer + this.offset = 0 +} + +// a super limited subset of the node buffer API +BufferReader.prototype.nextInt16BE = function () { + var value = this.buffer.readInt16BE(this.offset) + this.offset += 2 + return value +} + +BufferReader.prototype.nextUInt8 = function () { + var value = this.buffer.readUInt8(this.offset) + this.offset += 1 + return value +} + +// EBML variable sized integers +BufferReader.prototype.nextUIntV = function () { + var v = vint(this.buffer, this.offset) + this.offset += v.length + return v.value +} + +BufferReader.prototype.nextIntV = function () { + var v = vint(this.buffer, this.offset, true) + this.offset += v.length + return v.value +} + +// buffer slice +BufferReader.prototype.nextBuffer = function (length) { + var buffer = length + ? this.buffer.slice(this.offset, this.offset + length) + : this.buffer.slice(this.offset) + this.offset += length || this.length + return buffer +} + +// remaining bytes to read +Object.defineProperty(BufferReader.prototype, 'length', { + get: function () { return this.buffer.length - this.offset } +}) + +module.exports = BufferReader + + +/***/ }), + +/***/ "./node_modules/ebml-block/lib/vint.js": +/*!*********************************************!*\ + !*** ./node_modules/ebml-block/lib/vint.js ***! + \*********************************************/ +/***/ ((module) => { + +// https://github.com/themasch/node-ebml/blob/master/lib/ebml/tools.js +module.exports = function (buffer, start, signed) { + start = start || 0 + for (var length = 1; length <= 8; length++) { + if (buffer[start] >= Math.pow(2, 8 - length)) { + break + } + } + if (length > 8) { + throw new Error('Unrepresentable length: ' + length + ' ' + + buffer.toString('hex', start, start + length)) + } + if (start + length > buffer.length) { + return null + } + var i + var value = buffer[start] & (1 << (8 - length)) - 1 + for (i = 1; i < length; i++) { + if (i === 7) { + if (value >= Math.pow(2, 53 - 8) && buffer[start + 7] > 0) { + return { + length: length, + value: -1 + } + } + } + value *= Math.pow(2, 8) + value += buffer[start + i] + } + if (signed) { + value -= Math.pow(2, length * 7 - 1) - 1 + } + return { + length: length, + value: value + } +} + + +/***/ }), + +/***/ "./node_modules/ebml/lib/ebml/tools.js": +/*!*********************************************!*\ + !*** ./node_modules/ebml/lib/ebml/tools.js ***! + \*********************************************/ +/***/ ((module) => { + +var tools = { + readVint: function(buffer, start) { + start = start || 0; + for (var length = 1; length <= 8; length++) { + if (buffer[start] >= Math.pow(2, 8 - length)) { + break; + } + } + if (length > 8) { + throw new Error("Unrepresentable length: " + length + " " + + buffer.toString('hex', start, start + length)); + } + if (start + length > buffer.length) { + return null; + } + var value = buffer[start] & (1 << (8 - length)) - 1; + for (var i = 1; i < length; i++) { + if (i === 7) { + if (value >= Math.pow(2, 53 - 8) && buffer[start + 7] > 0) { + return { + length: length, + value: -1 + }; + } + } + value *= Math.pow(2, 8); + value += buffer[start + i]; + } + return { + length: length, + value: value + }; + }, + + writeVint: function(value) { + if (value < 0 || value > Math.pow(2, 53)) { + throw new Error("Unrepresentable value: " + value); + } + for (var length = 1; length <= 8; length++) { + if (value < Math.pow(2, 7 * length) - 1) { + break; + } + } + var buffer = new Buffer(length); + for (var i = 1; i <= length; i++) { + var b = value & 0xFF; + buffer[length - i] = b; + value -= b; + value /= Math.pow(2, 8); + } + buffer[0] = buffer[0] | (1 << (8 - length)); + return buffer; + } +}; + +module.exports = tools; + + /***/ }), /***/ "./node_modules/firebase/app/dist/index.esm.js": @@ -16811,6 +19160,7 @@ class VisiblePassword extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "FirebaseError": () => (/* reexport safe */ _firebase_app__WEBPACK_IMPORTED_MODULE_0__.FirebaseError), @@ -16867,6 +19217,7 @@ var version = "9.14.0"; \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "deleteToken": () => (/* reexport safe */ _firebase_messaging__WEBPACK_IMPORTED_MODULE_0__.deleteToken), @@ -16880,6 +19231,4519 @@ __webpack_require__.r(__webpack_exports__); //# sourceMappingURL=index.esm.js.map +/***/ }), + +/***/ "./node_modules/ieee754/index.js": +/*!***************************************!*\ + !*** ./node_modules/ieee754/index.js ***! + \***************************************/ +/***/ ((__unused_webpack_module, exports) => { + +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + + +/***/ }), + +/***/ "./node_modules/int64-buffer/int64-buffer.js": +/*!***************************************************!*\ + !*** ./node_modules/int64-buffer/int64-buffer.js ***! + \***************************************************/ +/***/ (function(__unused_webpack_module, exports) { + +// int64-buffer.js + +/*jshint -W018 */ // Confusing use of '!'. +/*jshint -W030 */ // Expected an assignment or function call and instead saw an expression. +/*jshint -W093 */ // Did you mean to return a conditional instead of an assignment? + +var Uint64BE, Int64BE, Uint64LE, Int64LE; + +!function(exports) { + // constants + + var UNDEFINED = "undefined"; + var BUFFER = (UNDEFINED !== typeof Buffer) && Buffer; + var UINT8ARRAY = (UNDEFINED !== typeof Uint8Array) && Uint8Array; + var ARRAYBUFFER = (UNDEFINED !== typeof ArrayBuffer) && ArrayBuffer; + var ZERO = [0, 0, 0, 0, 0, 0, 0, 0]; + var isArray = Array.isArray || _isArray; + var BIT32 = 4294967296; + var BIT24 = 16777216; + + // storage class + + var storage; // Array; + + // generate classes + + Uint64BE = factory("Uint64BE", true, true); + Int64BE = factory("Int64BE", true, false); + Uint64LE = factory("Uint64LE", false, true); + Int64LE = factory("Int64LE", false, false); + + // class factory + + function factory(name, bigendian, unsigned) { + var posH = bigendian ? 0 : 4; + var posL = bigendian ? 4 : 0; + var pos0 = bigendian ? 0 : 3; + var pos1 = bigendian ? 1 : 2; + var pos2 = bigendian ? 2 : 1; + var pos3 = bigendian ? 3 : 0; + var fromPositive = bigendian ? fromPositiveBE : fromPositiveLE; + var fromNegative = bigendian ? fromNegativeBE : fromNegativeLE; + var proto = Int64.prototype; + var isName = "is" + name; + var _isInt64 = "_" + isName; + + // properties + proto.buffer = void 0; + proto.offset = 0; + proto[_isInt64] = true; + + // methods + proto.toNumber = toNumber; + proto.toString = toString; + proto.toJSON = toNumber; + proto.toArray = toArray; + + // add .toBuffer() method only when Buffer available + if (BUFFER) proto.toBuffer = toBuffer; + + // add .toArrayBuffer() method only when Uint8Array available + if (UINT8ARRAY) proto.toArrayBuffer = toArrayBuffer; + + // isUint64BE, isInt64BE + Int64[isName] = isInt64; + + // CommonJS + exports[name] = Int64; + + return Int64; + + // constructor + function Int64(buffer, offset, value, raddix) { + if (!(this instanceof Int64)) return new Int64(buffer, offset, value, raddix); + return init(this, buffer, offset, value, raddix); + } + + // isUint64BE, isInt64BE + function isInt64(b) { + return !!(b && b[_isInt64]); + } + + // initializer + function init(that, buffer, offset, value, raddix) { + if (UINT8ARRAY && ARRAYBUFFER) { + if (buffer instanceof ARRAYBUFFER) buffer = new UINT8ARRAY(buffer); + if (value instanceof ARRAYBUFFER) value = new UINT8ARRAY(value); + } + + // Int64BE() style + if (!buffer && !offset && !value && !storage) { + // shortcut to initialize with zero + that.buffer = newArray(ZERO, 0); + return; + } + + // Int64BE(value, raddix) style + if (!isValidBuffer(buffer, offset)) { + var _storage = storage || Array; + raddix = offset; + value = buffer; + offset = 0; + buffer = new _storage(8); + } + + that.buffer = buffer; + that.offset = offset |= 0; + + // Int64BE(buffer, offset) style + if (UNDEFINED === typeof value) return; + + // Int64BE(buffer, offset, value, raddix) style + if ("string" === typeof value) { + fromString(buffer, offset, value, raddix || 10); + } else if (isValidBuffer(value, raddix)) { + fromArray(buffer, offset, value, raddix); + } else if ("number" === typeof raddix) { + writeInt32(buffer, offset + posH, value); // high + writeInt32(buffer, offset + posL, raddix); // low + } else if (value > 0) { + fromPositive(buffer, offset, value); // positive + } else if (value < 0) { + fromNegative(buffer, offset, value); // negative + } else { + fromArray(buffer, offset, ZERO, 0); // zero, NaN and others + } + } + + function fromString(buffer, offset, str, raddix) { + var pos = 0; + var len = str.length; + var high = 0; + var low = 0; + if (str[0] === "-") pos++; + var sign = pos; + while (pos < len) { + var chr = parseInt(str[pos++], raddix); + if (!(chr >= 0)) break; // NaN + low = low * raddix + chr; + high = high * raddix + Math.floor(low / BIT32); + low %= BIT32; + } + if (sign) { + high = ~high; + if (low) { + low = BIT32 - low; + } else { + high++; + } + } + writeInt32(buffer, offset + posH, high); + writeInt32(buffer, offset + posL, low); + } + + function toNumber() { + var buffer = this.buffer; + var offset = this.offset; + var high = readInt32(buffer, offset + posH); + var low = readInt32(buffer, offset + posL); + if (!unsigned) high |= 0; // a trick to get signed + return high ? (high * BIT32 + low) : low; + } + + function toString(radix) { + var buffer = this.buffer; + var offset = this.offset; + var high = readInt32(buffer, offset + posH); + var low = readInt32(buffer, offset + posL); + var str = ""; + var sign = !unsigned && (high & 0x80000000); + if (sign) { + high = ~high; + low = BIT32 - low; + } + radix = radix || 10; + while (1) { + var mod = (high % radix) * BIT32 + low; + high = Math.floor(high / radix); + low = Math.floor(mod / radix); + str = (mod % radix).toString(radix) + str; + if (!high && !low) break; + } + if (sign) { + str = "-" + str; + } + return str; + } + + function writeInt32(buffer, offset, value) { + buffer[offset + pos3] = value & 255; + value = value >> 8; + buffer[offset + pos2] = value & 255; + value = value >> 8; + buffer[offset + pos1] = value & 255; + value = value >> 8; + buffer[offset + pos0] = value & 255; + } + + function readInt32(buffer, offset) { + return (buffer[offset + pos0] * BIT24) + + (buffer[offset + pos1] << 16) + + (buffer[offset + pos2] << 8) + + buffer[offset + pos3]; + } + } + + function toArray(raw) { + var buffer = this.buffer; + var offset = this.offset; + storage = null; // Array + if (raw !== false && offset === 0 && buffer.length === 8 && isArray(buffer)) return buffer; + return newArray(buffer, offset); + } + + function toBuffer(raw) { + var buffer = this.buffer; + var offset = this.offset; + storage = BUFFER; + if (raw !== false && offset === 0 && buffer.length === 8 && Buffer.isBuffer(buffer)) return buffer; + var dest = new BUFFER(8); + fromArray(dest, 0, buffer, offset); + return dest; + } + + function toArrayBuffer(raw) { + var buffer = this.buffer; + var offset = this.offset; + var arrbuf = buffer.buffer; + storage = UINT8ARRAY; + if (raw !== false && offset === 0 && (arrbuf instanceof ARRAYBUFFER) && arrbuf.byteLength === 8) return arrbuf; + var dest = new UINT8ARRAY(8); + fromArray(dest, 0, buffer, offset); + return dest.buffer; + } + + function isValidBuffer(buffer, offset) { + var len = buffer && buffer.length; + offset |= 0; + return len && (offset + 8 <= len) && ("string" !== typeof buffer[offset]); + } + + function fromArray(destbuf, destoff, srcbuf, srcoff) { + destoff |= 0; + srcoff |= 0; + for (var i = 0; i < 8; i++) { + destbuf[destoff++] = srcbuf[srcoff++] & 255; + } + } + + function newArray(buffer, offset) { + return Array.prototype.slice.call(buffer, offset, offset + 8); + } + + function fromPositiveBE(buffer, offset, value) { + var pos = offset + 8; + while (pos > offset) { + buffer[--pos] = value & 255; + value /= 256; + } + } + + function fromNegativeBE(buffer, offset, value) { + var pos = offset + 8; + value++; + while (pos > offset) { + buffer[--pos] = ((-value) & 255) ^ 255; + value /= 256; + } + } + + function fromPositiveLE(buffer, offset, value) { + var end = offset + 8; + while (offset < end) { + buffer[offset++] = value & 255; + value /= 256; + } + } + + function fromNegativeLE(buffer, offset, value) { + var end = offset + 8; + value++; + while (offset < end) { + buffer[offset++] = ((-value) & 255) ^ 255; + value /= 256; + } + } + + // https://github.com/retrofox/is-array + function _isArray(val) { + return !!val && "[object Array]" == Object.prototype.toString.call(val); + } + +}( true && typeof exports.nodeName !== 'string' ? exports : (this || {})); + + +/***/ }), + +/***/ "./node_modules/matroska/lib/schema.js": +/*!*********************************************!*\ + !*** ./node_modules/matroska/lib/schema.js ***! + \*********************************************/ +/***/ ((module) => { + +"use strict"; +/*jslint node: true, vars: true, nomen: true */ + + +var byEbmlID = { + 0x80: { + name: "ChapterDisplay", + level: 4, + type: "m", + multiple: true, + webm: true, + description: "Contains all possible strings to use for the chapter display." + }, + 0x83: { + name: "TrackType", + level: 3, + type: "u", + mandatory: true, + description: "The `TrackType` defines the type of each frame found in the Track. The value **SHOULD** be stored on 1 octet." + }, + 0x85: { + name: "ChapString", + cppname: "ChapterString", + level: 5, + type: "8", + mandatory: true, + webm: true, + description: "Contains the string to use as the chapter atom." + }, + 0x86: { + name: "CodecID", + level: 3, + type: "s", + mandatory: true, + description: "An ID corresponding to the codec, see [@!MatroskaCodec] for more info." + }, + 0x88: { + name: "FlagDefault", + cppname: "TrackFlagDefault", + level: 3, + type: "u", + mandatory: true, + "default": "1", + range: "0-1", + description: "Set if that track (audio, video or subs) **SHOULD** be eligible for automatic selection by the player; see (#default-track-selection) for more details." + }, + 0x89: { + name: "ChapterTrackUID", + cppname: "ChapterTrackNumber", + level: 5, + type: "u", + mandatory: true, + multiple: true, + range: "not 0", + description: "UID of the Track to apply this chapter to. In the absence of a control track, choosing this chapter will select the listed Tracks and deselect unlisted tracks. Absence of this Element indicates that the Chapter **SHOULD** be applied to any currently used Tracks." + }, + 0x8e: { + name: "Slices", + level: 3, + type: "m", + maxver: 0, + description: "Contains slices description." + }, + 0x8f: { + name: "ChapterTrack", + level: 4, + type: "m", + description: "List of tracks on which the chapter applies. If this Element is not present, all tracks apply" + }, + 0x91: { + name: "ChapterTimeStart", + level: 4, + type: "u", + mandatory: true, + webm: true, + description: "Timestamp of the start of Chapter, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks)." + }, + 0x92: { + name: "ChapterTimeEnd", + level: 4, + type: "u", + webm: true, + description: "Timestamp of the end of Chapter timestamp excluded, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks). The value **MUST** be greater than or equal to the `ChapterTimeStart` of the same `ChapterAtom`." + }, + 0x96: { + name: "CueRefTime", + level: 5, + type: "u", + mandatory: true, + minver: 2, + description: "Timestamp of the referenced Block, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks)." + }, + 0x97: { + name: "CueRefCluster", + level: 5, + type: "u", + mandatory: true, + minver: 0, + maxver: 0, + description: "The Segment Position of the Cluster containing the referenced Block." + }, + 0x98: { + name: "ChapterFlagHidden", + level: 4, + type: "u", + mandatory: true, + "default": "0", + range: "0-1", + description: "Set to 1 if a chapter is hidden. Hidden chapters **SHOULD NOT** be available to the user interface (but still to Control Tracks; see (#chapterflaghidden) on Chapter flags)." + }, + 0x9a: { + name: "FlagInterlaced", + cppname: "VideoFlagInterlaced", + level: 4, + type: "u", + mandatory: true, + minver: 2, + webm: true, + "default": "0", + description: "Specify whether the video frames in this track are interlaced or not." + }, + 0x9b: { + name: "BlockDuration", + level: 3, + type: "u", + description: "The duration of the Block, expressed in Track Ticks; see (#timestamp-ticks). The BlockDuration Element can be useful at the end of a Track to define the duration of the last frame (as there is no subsequent Block available), or when there is a break in a track like for subtitle tracks." + }, + 0x9c: { + name: "FlagLacing", + cppname: "TrackFlagLacing", + level: 3, + type: "u", + mandatory: true, + "default": "1", + range: "0-1", + description: "Set to 1 if the track **MAY** contain blocks using lacing. When set to 0 all blocks **MUST** have their lacing flags set to No lacing; see (#block-lacing) on Block Lacing." + }, + 0x9d: { + name: "FieldOrder", + cppname: "VideoFieldOrder", + level: 4, + type: "u", + mandatory: true, + minver: 4, + "default": "2", + description: "Specify the field ordering of video frames in this track." + }, + 0x9f: { + name: "Channels", + cppname: "AudioChannels", + level: 4, + type: "u", + mandatory: true, + "default": "1", + range: "not 0", + description: "Numbers of channels in the track." + }, + 0xa0: { + name: "BlockGroup", + level: 2, + type: "m", + multiple: true, + description: "Basic container of information containing a single Block and information specific to that Block." + }, + 0xa1: { + name: "Block", + level: 3, + type: "b", + mandatory: true, + description: "Block containing the actual data to be rendered and a timestamp relative to the Cluster Timestamp; see (#block-structure) on Block Structure." + }, + 0xa2: { + name: "BlockVirtual", + level: 3, + type: "b", + minver: 0, + maxver: 0, + description: "A Block with no data. It **MUST** be stored in the stream at the place the real Block would be in display order. " + }, + 0xa3: { + name: "SimpleBlock", + level: 2, + type: "b", + multiple: true, + minver: 2, + webm: true, + divx: true, + description: "Similar to Block, see (#block-structure), but without all the extra information, mostly used to reduced overhead when no extra feature is needed; see (#simpleblock-structure) on SimpleBlock Structure." + }, + 0xa4: { + name: "CodecState", + level: 3, + type: "b", + minver: 2, + description: "The new codec state to use. Data interpretation is private to the codec. This information **SHOULD** always be referenced by a seek entry." + }, + 0xa5: { + name: "BlockAdditional", + level: 5, + type: "b", + mandatory: true, + webm: true, + description: "Interpreted by the codec as it wishes (using the BlockAddID)." + }, + 0xa6: { + name: "BlockMore", + level: 4, + type: "m", + mandatory: true, + multiple: true, + webm: true, + description: "Contain the BlockAdditional and some parameters." + }, + 0xa7: { + name: "Position", + cppname: "ClusterPosition", + level: 2, + type: "u", + description: "The Segment Position of the Cluster in the Segment (0 in live streams). It might help to resynchronise offset on damaged streams." + }, + 0xaa: { + name: "CodecDecodeAll", + level: 3, + type: "u", + mandatory: true, + maxver: 0, + "default": "1", + range: "0-1", + description: "Set to 1 if the codec can decode potentially damaged data." + }, + 0xab: { + name: "PrevSize", + cppname: "ClusterPrevSize", + level: 2, + type: "u", + description: "Size of the previous Cluster, in octets. Can be useful for backward playing." + }, + 0xae: { + name: "TrackEntry", + level: 2, + type: "m", + mandatory: true, + multiple: true, + description: "Describes a track with all Elements." + }, + 0xaf: { + name: "EncryptedBlock", + level: 2, + type: "b", + multiple: true, + minver: 0, + maxver: 0, + description: "Similar to SimpleBlock, see (#simpleblock-structure), but the data inside the Block are Transformed (encrypt and/or signed)." + }, + 0xb0: { + name: "PixelWidth", + cppname: "VideoPixelWidth", + level: 4, + type: "u", + mandatory: true, + range: "not 0", + description: "Width of the encoded video frames in pixels." + }, + 0xb2: { + name: "CueDuration", + level: 4, + type: "u", + minver: 4, + webm: true, + description: "The duration of the block, expressed in Segment Ticks which is based on TimestampScale; see (#timestamp-ticks). If missing, the track's DefaultDuration does not apply and no duration information is available in terms of the cues." + }, + 0xb3: { + name: "CueTime", + level: 3, + type: "u", + mandatory: true, + description: "Absolute timestamp of the seek point, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks)." + }, + 0xb5: { + name: "SamplingFrequency", + cppname: "AudioSamplingFreq", + level: 4, + type: "f", + mandatory: true, + "default": "0x1.f4p+12", + range: "> 0x0p+0", + description: "Sampling frequency in Hz." + }, + 0xb6: { + name: "ChapterAtom", + level: 3, + type: "m", + mandatory: true, + multiple: true, + webm: true, + description: "Contains the atom information to use as the chapter atom (apply to all tracks)." + }, + 0xb7: { + name: "CueTrackPositions", + level: 3, + type: "m", + mandatory: true, + multiple: true, + description: "Contain positions for different tracks corresponding to the timestamp." + }, + 0xb9: { + name: "FlagEnabled", + cppname: "TrackFlagEnabled", + level: 3, + type: "u", + mandatory: true, + minver: 2, + webm: true, + "default": "1", + range: "0-1", + description: "Set to 1 if the track is usable. It is possible to turn a not usable track into a usable track using chapter codecs or control tracks." + }, + 0xba: { + name: "PixelHeight", + cppname: "VideoPixelHeight", + level: 4, + type: "u", + mandatory: true, + range: "not 0", + description: "Height of the encoded video frames in pixels." + }, + 0xbb: { + name: "CuePoint", + level: 2, + type: "m", + mandatory: true, + multiple: true, + description: "Contains all information relative to a seek point in the Segment." + }, + 0xbf: { + name: "CRC-32", + level: -1, + type: "b", + minver: 1, + webm: false, + description: "The CRC is computed on all the data of the Master element it's in. The CRC element should be the first in it's parent master for easier reading. All level 1 elements should include a CRC-32. The CRC in use is the IEEE CRC32 Little Endian.", + crc: true + }, + 0xc0: { + name: "TrickTrackUID", + level: 3, + type: "u", + minver: 0, + maxver: 0, + divx: true, + description: "The TrackUID of the Smooth FF/RW video in the paired EBML structure corresponding to this video track. See [@?DivXTrickTrack]." + }, + 0xc1: { + name: "TrickTrackSegmentUID", + level: 3, + type: "b", + minver: 0, + maxver: 0, + divx: true, + description: "The SegmentUID of the Segment containing the track identified by TrickTrackUID. See [@?DivXTrickTrack]." + }, + 0xc4: { + name: "TrickMasterTrackSegmentUID", + level: 3, + type: "b", + minver: 0, + maxver: 0, + divx: true, + description: "The SegmentUID of the Segment containing the track identified by MasterTrackUID. See [@?DivXTrickTrack]." + }, + 0xc6: { + name: "TrickTrackFlag", + level: 3, + type: "u", + minver: 0, + maxver: 0, + divx: true, + "default": "0", + description: "Set to 1 if this video track is a Smooth FF/RW track. If set to 1, MasterTrackUID and MasterTrackSegUID should must be present and BlockGroups for this track must contain ReferenceFrame structures. Otherwise, TrickTrackUID and TrickTrackSegUID must be present if this track has a corresponding Smooth FF/RW track. See [@?DivXTrickTrack]." + }, + 0xc7: { + name: "TrickMasterTrackUID", + level: 3, + type: "u", + minver: 0, + maxver: 0, + divx: true, + description: "The TrackUID of the video track in the paired EBML structure that corresponds to this Smooth FF/RW track. See [@?DivXTrickTrack]." + }, + 0xc8: { + name: "ReferenceFrame", + level: 3, + type: "m", + minver: 0, + maxver: 0, + divx: true, + description: "Contains information about the last reference frame. See [@?DivXTrickTrack]." + }, + 0xc9: { + name: "ReferenceOffset", + level: 4, + type: "u", + mandatory: true, + minver: 0, + maxver: 0, + divx: true, + description: "The relative offset, in bytes, from the previous BlockGroup element for this Smooth FF/RW video track to the containing BlockGroup element. See [@?DivXTrickTrack]." + }, + 0xca: { + name: "ReferenceTimestamp", + cppname: "ReferenceTimeCode", + level: 4, + type: "u", + mandatory: true, + minver: 0, + maxver: 0, + divx: true, + description: "The timestamp of the BlockGroup pointed to by ReferenceOffset, expressed in Track Ticks; see (#timestamp-ticks). See [@?DivXTrickTrack]." + }, + 0xcb: { + name: "BlockAdditionID", + cppname: "SliceBlockAddID", + level: 5, + type: "u", + minver: 0, + maxver: 0, + "default": "0", + description: "The ID of the BlockAdditional Element (0 is the main Block)." + }, + 0xcc: { + name: "LaceNumber", + cppname: "SliceLaceNumber", + level: 5, + type: "u", + minver: 0, + maxver: 0, + description: "The reverse number of the frame in the lace (0 is the last frame, 1 is the next to last, etc). Being able to interpret this Element is not **REQUIRED** for playback." + }, + 0xcd: { + name: "FrameNumber", + cppname: "SliceFrameNumber", + level: 5, + type: "u", + minver: 0, + maxver: 0, + "default": "0", + description: "The number of the frame to generate from this lace with this delay (allow you to generate many frames from the same Block/Frame)." + }, + 0xce: { + name: "Delay", + cppname: "SliceDelay", + level: 5, + type: "u", + minver: 0, + maxver: 0, + "default": "0", + description: "The delay to apply to the Element, expressed in Track Ticks; see (#timestamp-ticks)." + }, + 0xcf: { + name: "SliceDuration", + level: 5, + type: "u", + minver: 0, + maxver: 0, + "default": "0", + description: "The duration to apply to the Element, expressed in Track Ticks; see (#timestamp-ticks)." + }, + 0xd7: { + name: "TrackNumber", + level: 3, + type: "u", + mandatory: true, + range: "not 0", + description: "The track number as used in the Block Header (using more than 127 tracks is not encouraged, though the design allows an unlimited number)." + }, + 0xdb: { + name: "CueReference", + level: 4, + type: "m", + multiple: true, + minver: 2, + description: "The Clusters containing the referenced Blocks." + }, + 0xe0: { + name: "Video", + cppname: "TrackVideo", + level: 3, + type: "m", + description: "Video settings." + }, + 0xe1: { + name: "Audio", + cppname: "TrackAudio", + level: 3, + type: "m", + description: "Audio settings." + }, + 0xe2: { + name: "TrackOperation", + level: 3, + type: "m", + minver: 3, + description: "Operation that needs to be applied on tracks to create this virtual track. For more details look at (#track-operation)." + }, + 0xe3: { + name: "TrackCombinePlanes", + level: 4, + type: "m", + minver: 3, + description: "Contains the list of all video plane tracks that need to be combined to create this 3D track" + }, + 0xe4: { + name: "TrackPlane", + level: 5, + type: "m", + mandatory: true, + multiple: true, + minver: 3, + description: "Contains a video plane track that need to be combined to create this 3D track" + }, + 0xe5: { + name: "TrackPlaneUID", + level: 6, + type: "u", + mandatory: true, + minver: 3, + range: "not 0", + description: "The trackUID number of the track representing the plane." + }, + 0xe6: { + name: "TrackPlaneType", + level: 6, + type: "u", + mandatory: true, + minver: 3, + description: "The kind of plane this track corresponds to." + }, + 0xe7: { + name: "Timestamp", + cppname: "ClusterTimecode", + level: 2, + type: "u", + mandatory: true, + description: "Absolute timestamp of the cluster, expressed in Segment Ticks which is based on TimestampScale; see (#timestamp-ticks)." + }, + 0xe8: { + name: "TimeSlice", + level: 4, + type: "m", + multiple: true, + minver: 0, + maxver: 0, + description: "Contains extra time information about the data contained in the Block. Being able to interpret this Element is not **REQUIRED** for playback." + }, + 0xe9: { + name: "TrackJoinBlocks", + level: 4, + type: "m", + minver: 3, + description: "Contains the list of all tracks whose Blocks need to be combined to create this virtual track" + }, + 0xea: { + name: "CueCodecState", + level: 4, + type: "u", + mandatory: true, + minver: 2, + "default": "0", + description: "The Segment Position of the Codec State corresponding to this Cue Element. 0 means that the data is taken from the initial Track Entry." + }, + 0xeb: { + name: "CueRefCodecState", + level: 5, + type: "u", + minver: 0, + maxver: 0, + "default": "0", + description: "The Segment Position of the Codec State corresponding to this referenced Element. 0 means that the data is taken from the initial Track Entry." + }, + 0xec: { + name: "Void", + level: -1, + type: "b", + minver: 1, + description: "Used to void damaged data, to avoid unexpected behaviors when using damaged data. The content is discarded. Also used to reserve space in a sub-element for later use." + }, + 0xed: { + name: "TrackJoinUID", + level: 5, + type: "u", + mandatory: true, + multiple: true, + minver: 3, + range: "not 0", + description: "The trackUID number of a track whose blocks are used to create this virtual track." + }, + 0xee: { + name: "BlockAddID", + level: 5, + type: "u", + mandatory: true, + webm: true, + "default": "1", + range: "not 0", + description: "An ID to identify the BlockAdditional level. If BlockAddIDType of the corresponding block is 0, this value is also the value of BlockAddIDType for the meaning of the content of BlockAdditional." + }, + 0xf0: { + name: "CueRelativePosition", + level: 4, + type: "u", + minver: 4, + webm: true, + description: "The relative position inside the Cluster of the referenced SimpleBlock or BlockGroup with 0 being the first possible position for an Element inside that Cluster." + }, + 0xf1: { + name: "CueClusterPosition", + level: 4, + type: "u", + mandatory: true, + description: "The Segment Position of the Cluster containing the associated Block." + }, + 0xf7: { + name: "CueTrack", + level: 4, + type: "u", + mandatory: true, + range: "not 0", + description: "The track for which a position is given." + }, + 0xfa: { + name: "ReferencePriority", + level: 3, + type: "u", + mandatory: true, + "default": "0", + description: "This frame is referenced and has the specified cache priority. In cache only a frame of the same or higher priority can replace this frame. A value of 0 means the frame is not referenced." + }, + 0xfb: { + name: "ReferenceBlock", + level: 3, + type: "i", + multiple: true, + description: "A timestamp value, relative to the timestamp of the Block in this BlockGroup, expressed in Track Ticks; see (#timestamp-ticks). This is used to reference other frames necessary to decode this frame. The relative value **SHOULD** correspond to a valid `Block` this `Block` depends on. Historically Matroska Writer didn't write the actual `Block(s)` this `Block` depends on, but *some* `Block` in the past. The value \"0\" **MAY** also be used to signify this `Block` cannot be decoded on its own, but without knownledge of which `Block` is necessary. In this case, other `ReferenceBlock` **MUST NOT** be found in the same `BlockGroup`. If the `BlockGroup` doesn't have any `ReferenceBlock` element, then the `Block` it contains can be decoded without using any other `Block` data." + }, + 0xfd: { + name: "ReferenceVirtual", + level: 3, + type: "i", + minver: 0, + maxver: 0, + description: "The Segment Position of the data that would otherwise be in position of the virtual block." + }, + 0x41a4: { + name: "BlockAddIDName", + level: 4, + type: "s", + minver: 4, + description: "A human-friendly name describing the type of BlockAdditional data, as defined by the associated Block Additional Mapping." + }, + 0x41e4: { + name: "BlockAdditionMapping", + level: 3, + type: "m", + multiple: true, + minver: 4, + description: "Contains elements that extend the track format, by adding content either to each frame, with BlockAddID ((#blockaddid-element)), or to the track as a whole with BlockAddIDExtraData." + }, + 0x41e7: { + name: "BlockAddIDType", + level: 4, + type: "u", + mandatory: true, + minver: 4, + "default": "0", + description: "Stores the registered identifier of the Block Additional Mapping to define how the BlockAdditional data should be handled." + }, + 0x41ed: { + name: "BlockAddIDExtraData", + level: 4, + type: "b", + minver: 4, + description: "Extra binary data that the BlockAddIDType can use to interpret the BlockAdditional data. The interpretation of the binary data depends on the BlockAddIDType value and the corresponding Block Additional Mapping." + }, + 0x41f0: { + name: "BlockAddIDValue", + level: 4, + type: "u", + minver: 4, + range: ">=2", + description: "If the track format extension needs content beside frames, the value refers to the BlockAddID ((#blockaddid-element)), value being described. To keep MaxBlockAdditionID as low as possible, small values **SHOULD** be used." + }, + 0x4254: { + name: "ContentCompAlgo", + level: 6, + type: "u", + mandatory: true, + "default": "0", + description: "The compression algorithm used." + }, + 0x4255: { + name: "ContentCompSettings", + level: 6, + type: "b", + description: "Settings that might be needed by the decompressor. For Header Stripping (`ContentCompAlgo`=3), the bytes that were removed from the beginning of each frames of the track." + }, + 0x4282: { + name: "DocType", + level: 1, + type: "s", + mandatory: true, + "default": "matroska", + minver: 1, + description: "A string that describes the type of document that follows this EBML header. 'matroska' in our case or 'webm' for webm files." + }, + 0x4285: { + name: "DocTypeReadVersion", + level: 1, + type: "u", + mandatory: true, + "default": 1, + minver: 1, + description: "The minimum DocType version an interpreter has to support to read this file." + }, + 0x4286: { + name: "EBMLVersion", + level: 1, + type: "u", + mandatory: true, + "default": 1, + minver: 1, + description: "The version of EBML parser used to create the file." + }, + 0x4287: { + name: "DocTypeVersion", + level: 1, + type: "u", + mandatory: true, + "default": 1, + minver: 1, + description: "The version of DocType interpreter used to create the file." + }, + 0x42f2: { + name: "EBMLMaxIDLength", + level: 1, + type: "u", + mandatory: true, + "default": "4", + range: ">=4" + }, + 0x42f3: { + name: "EBMLMaxSizeLength", + level: 1, + type: "u", + mandatory: true, + "default": "8", + range: "not 0" + }, + 0x42f7: { + name: "EBMLReadVersion", + level: 1, + type: "u", + mandatory: true, + "default": 1, + minver: 1, + description: "The minimum EBML version a parser has to support to read this file." + }, + 0x437c: { + name: "ChapLanguage", + cppname: "ChapterLanguage", + level: 5, + type: "s", + mandatory: true, + multiple: true, + webm: true, + "default": "eng", + description: "A language corresponding to the string, in the bibliographic ISO-639-2 form [@!ISO639-2]. This Element **MUST** be ignored if a ChapLanguageIETF Element is used within the same ChapterDisplay Element." + }, + 0x437d: { + name: "ChapLanguageIETF", + level: 5, + type: "s", + multiple: true, + minver: 4, + description: "Specifies a language corresponding to the ChapString in the format defined in [@!BCP47] and using the IANA Language Subtag Registry [@!IANALangRegistry]. If a ChapLanguageIETF Element is used, then any ChapLanguage and ChapCountry Elements used in the same ChapterDisplay **MUST** be ignored." + }, + 0x437e: { + name: "ChapCountry", + cppname: "ChapterCountry", + level: 5, + type: "s", + multiple: true, + webm: true, + description: "A country corresponding to the string, using the same 2 octets country-codes as in Internet domains [@!IANADomains] based on [@!ISO3166-1] alpha-2 codes. This Element **MUST** be ignored if a ChapLanguageIETF Element is used within the same ChapterDisplay Element." + }, + 0x4444: { + name: "SegmentFamily", + level: 2, + type: "b", + multiple: true, + description: "A randomly generated unique ID that all Segments of a Linked Segment **MUST** share (128 bits)." + }, + 0x4461: { + name: "DateUTC", + level: 2, + type: "d", + description: "The date and time that the Segment was created by the muxing application or library." + }, + 0x447a: { + name: "TagLanguage", + cppname: "TagLangue", + level: 4, + type: "s", + mandatory: true, + webm: true, + "default": "und", + description: "Specifies the language of the tag specified, in the Matroska languages form; see (#language-codes) on language codes. This Element **MUST** be ignored if the TagLanguageIETF Element is used within the same SimpleTag Element." + }, + 0x447b: { + name: "TagLanguageIETF", + level: 4, + type: "s", + minver: 4, + description: "Specifies the language used in the TagString according to [@!BCP47] and using the IANA Language Subtag Registry [@!IANALangRegistry]. If this Element is used, then any TagLanguage Elements used in the same SimpleTag **MUST** be ignored." + }, + 0x4484: { + name: "TagDefault", + level: 4, + type: "u", + mandatory: true, + webm: true, + "default": "1", + range: "0-1", + description: "A boolean value to indicate if this is the default/original language to use for the given tag." + }, + 0x4485: { + name: "TagBinary", + level: 4, + type: "b", + webm: true, + description: "The values of the Tag, if it is binary. Note that this cannot be used in the same SimpleTag as TagString." + }, + 0x4487: { + name: "TagString", + level: 4, + type: "8", + webm: true, + description: "The value of the Tag." + }, + 0x4489: { + name: "Duration", + level: 2, + type: "f", + range: "> 0x0p+0", + description: "Duration of the Segment, expressed in Segment Ticks which is based on TimestampScale; see (#timestamp-ticks)." + }, + 0x44b4: { + name: "TagDefaultBogus", + level: 4, + type: "u", + mandatory: true, + minver: 0, + maxver: 0, + "default": "1", + range: "0-1", + description: "A variant of the TagDefault element with a bogus Element ID; see (#tagdefault-element)." + }, + 0x450d: { + name: "ChapProcessPrivate", + cppname: "ChapterProcessPrivate", + level: 5, + type: "b", + description: "Some optional data attached to the ChapProcessCodecID information. For ChapProcessCodecID = 1, it is the \"DVD level\" equivalent; see (#menu-features) on DVD menus." + }, + 0x4598: { + name: "ChapterFlagEnabled", + level: 4, + type: "u", + mandatory: true, + "default": "1", + range: "0-1", + description: "Set to 1 if the chapter is enabled. It can be enabled/disabled by a Control Track. When disabled, the movie **SHOULD** skip all the content between the TimeStart and TimeEnd of this chapter; see (#chapter-flags) on Chapter flags." + }, + 0x45a3: { + name: "TagName", + level: 4, + type: "8", + mandatory: true, + webm: true, + description: "The name of the Tag that is going to be stored." + }, + 0x45b9: { + name: "EditionEntry", + level: 2, + type: "m", + mandatory: true, + multiple: true, + webm: true, + description: "Contains all information about a Segment edition." + }, + 0x45bc: { + name: "EditionUID", + level: 3, + type: "u", + range: "not 0", + description: "A unique ID to identify the edition. It's useful for tagging an edition." + }, + 0x45bd: { + name: "EditionFlagHidden", + level: 3, + type: "u", + mandatory: true, + "default": "0", + range: "0-1", + description: "Set to 1 if an edition is hidden. Hidden editions **SHOULD NOT** be available to the user interface (but still to Control Tracks; see (#chapter-flags) on Chapter flags)." + }, + 0x45db: { + name: "EditionFlagDefault", + level: 3, + type: "u", + mandatory: true, + "default": "0", + range: "0-1", + description: "Set to 1 if the edition **SHOULD** be used as the default one." + }, + 0x45dd: { + name: "EditionFlagOrdered", + level: 3, + type: "u", + mandatory: true, + "default": "0", + range: "0-1", + description: "Set to 1 if the chapters can be defined multiple times and the order to play them is enforced; see (#editionflagordered)." + }, + 0x465c: { + name: "FileData", + level: 3, + type: "b", + mandatory: true, + description: "The data of the file." + }, + 0x4660: { + name: "FileMimeType", + cppname: "MimeType", + level: 3, + type: "s", + mandatory: true, + description: "MIME type of the file." + }, + 0x4661: { + name: "FileUsedStartTime", + level: 3, + type: "u", + minver: 0, + maxver: 0, + divx: true, + description: "The timestamp at which this optimized font attachment comes into context, expressed in Segment Ticks which is based on TimestampScale. See [@?DivXWorldFonts]." + }, + 0x4662: { + name: "FileUsedEndTime", + level: 3, + type: "u", + minver: 0, + maxver: 0, + divx: true, + description: "The timestamp at which this optimized font attachment goes out of context, expressed in Segment Ticks which is based on TimestampScale. See [@?DivXWorldFonts]." + }, + 0x466e: { + name: "FileName", + level: 3, + type: "8", + mandatory: true, + description: "Filename of the attached file." + }, + 0x4675: { + name: "FileReferral", + level: 3, + type: "b", + minver: 0, + maxver: 0, + description: "A binary value that a track/codec can refer to when the attachment is needed." + }, + 0x467e: { + name: "FileDescription", + level: 3, + type: "8", + description: "A human-friendly name for the attached file." + }, + 0x46ae: { + name: "FileUID", + level: 3, + type: "u", + mandatory: true, + range: "not 0", + description: "Unique ID representing the file, as random as possible." + }, + 0x47e1: { + name: "ContentEncAlgo", + level: 6, + type: "u", + mandatory: true, + webm: true, + "default": "0", + description: "The encryption algorithm used. The value \"0\" means that the contents have not been encrypted." + }, + 0x47e2: { + name: "ContentEncKeyID", + level: 6, + type: "b", + webm: true, + description: "For public key algorithms this is the ID of the public key the the data was encrypted with." + }, + 0x47e3: { + name: "ContentSignature", + level: 6, + type: "b", + maxver: 0, + description: "A cryptographic signature of the contents." + }, + 0x47e4: { + name: "ContentSigKeyID", + level: 6, + type: "b", + maxver: 0, + description: "This is the ID of the private key the data was signed with." + }, + 0x47e5: { + name: "ContentSigAlgo", + level: 6, + type: "u", + maxver: 0, + "default": "0", + description: "The algorithm used for the signature." + }, + 0x47e6: { + name: "ContentSigHashAlgo", + level: 6, + type: "u", + maxver: 0, + "default": "0", + description: "The hash algorithm used for the signature." + }, + 0x47e7: { + name: "ContentEncAESSettings", + level: 6, + type: "m", + minver: 4, + webm: true, + description: "Settings describing the encryption algorithm used. If `ContentEncAlgo` != 5 this **MUST** be ignored." + }, + 0x47e8: { + name: "AESSettingsCipherMode", + level: 7, + type: "u", + mandatory: true, + minver: 4, + webm: true, + description: "The AES cipher mode used in the encryption." + }, + 0x4d80: { + name: "MuxingApp", + level: 2, + type: "8", + mandatory: true, + description: "Muxing application or library (example: \"libmatroska-0.4.3\")." + }, + 0x4dbb: { + name: "Seek", + level: 2, + type: "m", + mandatory: true, + multiple: true, + description: "Contains a single seek entry to an EBML Element." + }, + 0x5031: { + name: "ContentEncodingOrder", + level: 5, + type: "u", + mandatory: true, + webm: true, + "default": "0", + description: "Tells when this modification was used during encoding/muxing starting with 0 and counting upwards. The decoder/demuxer has to start with the highest order number it finds and work its way down. This value has to be unique over all ContentEncodingOrder Elements in the TrackEntry that contains this ContentEncodingOrder element." + }, + 0x5032: { + name: "ContentEncodingScope", + level: 5, + type: "u", + mandatory: true, + webm: true, + "default": "1", + description: "A bit field that describes which Elements have been modified in this way. Values (big-endian) can be OR'ed." + }, + 0x5033: { + name: "ContentEncodingType", + level: 5, + type: "u", + mandatory: true, + webm: true, + "default": "0", + description: "A value describing what kind of transformation is applied." + }, + 0x5034: { + name: "ContentCompression", + level: 5, + type: "m", + description: "Settings describing the compression used. This Element **MUST** be present if the value of ContentEncodingType is 0 and absent otherwise. Each block **MUST** be decompressable even if no previous block is available in order not to prevent seeking." + }, + 0x5035: { + name: "ContentEncryption", + level: 5, + type: "m", + webm: true, + description: "Settings describing the encryption used. This Element **MUST** be present if the value of `ContentEncodingType` is 1 (encryption) and **MUST** be ignored otherwise." + }, + 0x535f: { + name: "CueRefNumber", + level: 5, + type: "u", + minver: 0, + maxver: 0, + "default": "1", + range: "not 0", + description: "Number of the referenced Block of Track X in the specified Cluster." + }, + 0x536e: { + name: "Name", + cppname: "TrackName", + level: 3, + type: "8", + description: "A human-readable track name." + }, + 0x5378: { + name: "CueBlockNumber", + level: 4, + type: "u", + range: "not 0", + description: "Number of the Block in the specified Cluster." + }, + 0x537f: { + name: "TrackOffset", + level: 3, + type: "i", + minver: 0, + maxver: 0, + "default": "0", + description: "A value to add to the Block's Timestamp, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks). This can be used to adjust the playback offset of a track." + }, + 0x53ab: { + name: "SeekID", + level: 3, + type: "b", + mandatory: true, + description: "The binary ID corresponding to the Element name." + }, + 0x53ac: { + name: "SeekPosition", + level: 3, + type: "u", + mandatory: true, + description: "The Segment Position of the Element." + }, + 0x53b8: { + name: "StereoMode", + cppname: "VideoStereoMode", + level: 4, + type: "u", + mandatory: true, + minver: 3, + webm: true, + "default": "0", + description: "Stereo-3D video mode. There are some more details in (#multi-planar-and-3d-videos)." + }, + 0x53b9: { + name: "OldStereoMode", + level: 4, + type: "u", + maxver: 0, + description: "DEPRECATED, DO NOT USE. Bogus StereoMode value used in old versions of libmatroska." + }, + 0x53c0: { + name: "AlphaMode", + cppname: "VideoAlphaMode", + level: 4, + type: "u", + mandatory: true, + minver: 3, + webm: true, + "default": "0", + description: "Indicate whether the BlockAdditional Element with BlockAddID of \"1\" contains Alpha data, as defined by to the Codec Mapping for the `CodecID`. Undefined values **SHOULD NOT** be used as the behavior of known implementations is different (considered either as 0 or 1)." + }, + 0x54aa: { + name: "PixelCropBottom", + cppname: "VideoPixelCropBottom", + level: 4, + type: "u", + mandatory: true, + "default": "0", + description: "The number of video pixels to remove at the bottom of the image." + }, + 0x54b0: { + name: "DisplayWidth", + cppname: "VideoDisplayWidth", + level: 4, + type: "u", + range: "not 0", + description: "Width of the video frames to display. Applies to the video frame after cropping (PixelCrop* Elements)." + }, + 0x54b2: { + name: "DisplayUnit", + cppname: "VideoDisplayUnit", + level: 4, + type: "u", + mandatory: true, + "default": "0", + description: "How DisplayWidth & DisplayHeight are interpreted." + }, + 0x54b3: { + name: "AspectRatioType", + cppname: "VideoAspectRatio", + level: 4, + type: "u", + minver: 0, + maxver: 0, + "default": "0", + description: "Specify the possible modifications to the aspect ratio." + }, + 0x54ba: { + name: "DisplayHeight", + cppname: "VideoDisplayHeight", + level: 4, + type: "u", + range: "not 0", + description: "Height of the video frames to display. Applies to the video frame after cropping (PixelCrop* Elements)." + }, + 0x54bb: { + name: "PixelCropTop", + cppname: "VideoPixelCropTop", + level: 4, + type: "u", + mandatory: true, + "default": "0", + description: "The number of video pixels to remove at the top of the image." + }, + 0x54cc: { + name: "PixelCropLeft", + cppname: "VideoPixelCropLeft", + level: 4, + type: "u", + mandatory: true, + "default": "0", + description: "The number of video pixels to remove on the left of the image." + }, + 0x54dd: { + name: "PixelCropRight", + cppname: "VideoPixelCropRight", + level: 4, + type: "u", + mandatory: true, + "default": "0", + description: "The number of video pixels to remove on the right of the image." + }, + 0x55aa: { + name: "FlagForced", + cppname: "TrackFlagForced", + level: 3, + type: "u", + mandatory: true, + "default": "0", + range: "0-1", + description: "Applies only to subtitles. Set if that track **SHOULD** be eligible for automatic selection by the player if it matches the user's language preference, even if the user's preferences would normally not enable subtitles with the selected audio track; this can be used for tracks containing only translations of foreign-language audio or onscreen text. See (#default-track-selection) for more details." + }, + 0x55ab: { + name: "FlagHearingImpaired", + level: 3, + type: "u", + minver: 4, + range: "0-1", + description: "Set to 1 if that track is suitable for users with hearing impairments, set to 0 if it is unsuitable for users with hearing impairments." + }, + 0x55ac: { + name: "FlagVisualImpaired", + level: 3, + type: "u", + minver: 4, + range: "0-1", + description: "Set to 1 if that track is suitable for users with visual impairments, set to 0 if it is unsuitable for users with visual impairments." + }, + 0x55ad: { + name: "FlagTextDescriptions", + level: 3, + type: "u", + minver: 4, + range: "0-1", + description: "Set to 1 if that track contains textual descriptions of video content, set to 0 if that track does not contain textual descriptions of video content." + }, + 0x55ae: { + name: "FlagOriginal", + level: 3, + type: "u", + minver: 4, + range: "0-1", + description: "Set to 1 if that track is in the content's original language, set to 0 if it is a translation." + }, + 0x55af: { + name: "FlagCommentary", + level: 3, + type: "u", + minver: 4, + range: "0-1", + description: "Set to 1 if that track contains commentary, set to 0 if it does not contain commentary." + }, + 0x55b0: { + name: "Colour", + cppname: "VideoColour", + level: 4, + type: "m", + minver: 4, + webm: true, + description: "Settings describing the colour format." + }, + 0x55b1: { + name: "MatrixCoefficients", + cppname: "VideoColourMatrix", + level: 5, + type: "u", + mandatory: true, + minver: 4, + webm: true, + "default": "2", + description: "The Matrix Coefficients of the video used to derive luma and chroma values from red, green, and blue color primaries. For clarity, the value and meanings for MatrixCoefficients are adopted from Table 4 of ISO/IEC 23001-8:2016 or ITU-T H.273." + }, + 0x55b2: { + name: "BitsPerChannel", + cppname: "VideoBitsPerChannel", + level: 5, + type: "u", + mandatory: true, + minver: 4, + webm: true, + "default": "0", + description: "Number of decoded bits per channel. A value of 0 indicates that the BitsPerChannel is unspecified." + }, + 0x55b3: { + name: "ChromaSubsamplingHorz", + cppname: "VideoChromaSubsampHorz", + level: 5, + type: "u", + minver: 4, + webm: true, + description: "The amount of pixels to remove in the Cr and Cb channels for every pixel not removed horizontally. Example: For video with 4:2:0 chroma subsampling, the ChromaSubsamplingHorz **SHOULD** be set to 1." + }, + 0x55b4: { + name: "ChromaSubsamplingVert", + cppname: "VideoChromaSubsampVert", + level: 5, + type: "u", + minver: 4, + webm: true, + description: "The amount of pixels to remove in the Cr and Cb channels for every pixel not removed vertically. Example: For video with 4:2:0 chroma subsampling, the ChromaSubsamplingVert **SHOULD** be set to 1." + }, + 0x55b5: { + name: "CbSubsamplingHorz", + cppname: "VideoCbSubsampHorz", + level: 5, + type: "u", + minver: 4, + webm: true, + description: "The amount of pixels to remove in the Cb channel for every pixel not removed horizontally. This is additive with ChromaSubsamplingHorz. Example: For video with 4:2:1 chroma subsampling, the ChromaSubsamplingHorz **SHOULD** be set to 1 and CbSubsamplingHorz **SHOULD** be set to 1." + }, + 0x55b6: { + name: "CbSubsamplingVert", + cppname: "VideoCbSubsampVert", + level: 5, + type: "u", + minver: 4, + webm: true, + description: "The amount of pixels to remove in the Cb channel for every pixel not removed vertically. This is additive with ChromaSubsamplingVert." + }, + 0x55b7: { + name: "ChromaSitingHorz", + cppname: "VideoChromaSitHorz", + level: 5, + type: "u", + mandatory: true, + minver: 4, + webm: true, + "default": "0", + description: "How chroma is subsampled horizontally." + }, + 0x55b8: { + name: "ChromaSitingVert", + cppname: "VideoChromaSitVert", + level: 5, + type: "u", + mandatory: true, + minver: 4, + webm: true, + "default": "0", + description: "How chroma is subsampled vertically." + }, + 0x55b9: { + name: "Range", + cppname: "VideoColourRange", + level: 5, + type: "u", + mandatory: true, + minver: 4, + webm: true, + "default": "0", + description: "Clipping of the color ranges." + }, + 0x55ba: { + name: "TransferCharacteristics", + cppname: "VideoColourTransferCharacter", + level: 5, + type: "u", + mandatory: true, + minver: 4, + webm: true, + "default": "2", + description: "The transfer characteristics of the video. For clarity, the value and meanings for TransferCharacteristics are adopted from Table 3 of ISO/IEC 23091-4 or ITU-T H.273." + }, + 0x55bb: { + name: "Primaries", + cppname: "VideoColourPrimaries", + level: 5, + type: "u", + mandatory: true, + minver: 4, + webm: true, + "default": "2", + description: "The colour primaries of the video. For clarity, the value and meanings for Primaries are adopted from Table 2 of ISO/IEC 23091-4 or ITU-T H.273." + }, + 0x55bc: { + name: "MaxCLL", + cppname: "VideoColourMaxCLL", + level: 5, + type: "u", + minver: 4, + webm: true, + description: "Maximum brightness of a single pixel (Maximum Content Light Level) in candelas per square meter (cd/m^2^)." + }, + 0x55bd: { + name: "MaxFALL", + cppname: "VideoColourMaxFALL", + level: 5, + type: "u", + minver: 4, + webm: true, + description: "Maximum brightness of a single full frame (Maximum Frame-Average Light Level) in candelas per square meter (cd/m^2^)." + }, + 0x55d0: { + name: "MasteringMetadata", + cppname: "VideoColourMasterMeta", + level: 5, + type: "m", + minver: 4, + webm: true, + description: "SMPTE 2086 mastering data." + }, + 0x55d1: { + name: "PrimaryRChromaticityX", + cppname: "VideoRChromaX", + level: 6, + type: "f", + minver: 4, + webm: true, + range: "0-1", + description: "Red X chromaticity coordinate, as defined by CIE 1931." + }, + 0x55d2: { + name: "PrimaryRChromaticityY", + cppname: "VideoRChromaY", + level: 6, + type: "f", + minver: 4, + webm: true, + range: "0-1", + description: "Red Y chromaticity coordinate, as defined by CIE 1931." + }, + 0x55d3: { + name: "PrimaryGChromaticityX", + cppname: "VideoGChromaX", + level: 6, + type: "f", + minver: 4, + webm: true, + range: "0-1", + description: "Green X chromaticity coordinate, as defined by CIE 1931." + }, + 0x55d4: { + name: "PrimaryGChromaticityY", + cppname: "VideoGChromaY", + level: 6, + type: "f", + minver: 4, + webm: true, + range: "0-1", + description: "Green Y chromaticity coordinate, as defined by CIE 1931." + }, + 0x55d5: { + name: "PrimaryBChromaticityX", + cppname: "VideoBChromaX", + level: 6, + type: "f", + minver: 4, + webm: true, + range: "0-1", + description: "Blue X chromaticity coordinate, as defined by CIE 1931." + }, + 0x55d6: { + name: "PrimaryBChromaticityY", + cppname: "VideoBChromaY", + level: 6, + type: "f", + minver: 4, + webm: true, + range: "0-1", + description: "Blue Y chromaticity coordinate, as defined by CIE 1931." + }, + 0x55d7: { + name: "WhitePointChromaticityX", + cppname: "VideoWhitePointChromaX", + level: 6, + type: "f", + minver: 4, + webm: true, + range: "0-1", + description: "White X chromaticity coordinate, as defined by CIE 1931." + }, + 0x55d8: { + name: "WhitePointChromaticityY", + cppname: "VideoWhitePointChromaY", + level: 6, + type: "f", + minver: 4, + webm: true, + range: "0-1", + description: "White Y chromaticity coordinate, as defined by CIE 1931." + }, + 0x55d9: { + name: "LuminanceMax", + cppname: "VideoLuminanceMax", + level: 6, + type: "f", + minver: 4, + webm: true, + range: ">= 0x0p+0", + description: "Maximum luminance. Represented in candelas per square meter (cd/m^2^)." + }, + 0x55da: { + name: "LuminanceMin", + cppname: "VideoLuminanceMin", + level: 6, + type: "f", + minver: 4, + webm: true, + range: ">= 0x0p+0", + description: "Minimum luminance. Represented in candelas per square meter (cd/m^2^)." + }, + 0x55ee: { + name: "MaxBlockAdditionID", + level: 3, + type: "u", + mandatory: true, + "default": "0", + description: "The maximum value of BlockAddID ((#blockaddid-element)). A value 0 means there is no BlockAdditions ((#blockadditions-element)) for this track." + }, + 0x5654: { + name: "ChapterStringUID", + level: 4, + type: "8", + minver: 3, + webm: true, + description: "A unique string ID to identify the Chapter. Use for WebVTT cue identifier storage [@!WebVTT]." + }, + 0x56aa: { + name: "CodecDelay", + level: 3, + type: "u", + mandatory: true, + minver: 4, + webm: true, + description: "CodecDelay is The codec-built-in delay, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks). It represents the amount of codec samples that will be discarded by the decoder during playback. This timestamp value **MUST** be subtracted from each frame timestamp in order to get the timestamp that will be actually played. The value **SHOULD** be small so the muxing of tracks with the same actual timestamp are in the same Cluster." + }, + 0x56bb: { + name: "SeekPreRoll", + level: 3, + type: "u", + mandatory: true, + minver: 4, + webm: true, + "default": "0", + description: "After a discontinuity, SeekPreRoll is the duration of the data the decoder **MUST** decode before the decoded data is valid, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks)." + }, + 0x5741: { + name: "WritingApp", + level: 2, + type: "8", + mandatory: true, + description: "Writing application (example: \"mkvmerge-0.3.3\")." + }, + 0x5854: { + name: "SilentTracks", + cppname: "ClusterSilentTracks", + level: 2, + type: "m", + minver: 0, + maxver: 0, + description: "The list of tracks that are not used in that part of the stream. It is useful when using overlay tracks on seeking or to decide what track to use." + }, + 0x58d7: { + name: "SilentTrackNumber", + cppname: "ClusterSilentTrackNumber", + level: 3, + type: "u", + multiple: true, + minver: 0, + maxver: 0, + description: "One of the track number that are not used from now on in the stream. It could change later if not specified as silent in a further Cluster." + }, + 0x61a7: { + name: "AttachedFile", + cppname: "Attached", + level: 2, + type: "m", + mandatory: true, + multiple: true, + description: "An attached file." + }, + 0x6240: { + name: "ContentEncoding", + level: 4, + type: "m", + mandatory: true, + multiple: true, + webm: true, + description: "Settings for one content encoding like compression or encryption." + }, + 0x6264: { + name: "BitDepth", + cppname: "AudioBitDepth", + level: 4, + type: "u", + range: "not 0", + description: "Bits per sample, mostly used for PCM." + }, + 0x63a2: { + name: "CodecPrivate", + level: 3, + type: "b", + description: "Private data only known to the codec." + }, + 0x63c0: { + name: "Targets", + cppname: "TagTargets", + level: 3, + type: "m", + mandatory: true, + webm: true, + description: "Specifies which other elements the metadata represented by the Tag applies to. If empty or not present, then the Tag describes everything in the Segment." + }, + 0x63c3: { + name: "ChapterPhysicalEquiv", + level: 4, + type: "u", + description: "Specify the physical equivalent of this ChapterAtom like \"DVD\" (60) or \"SIDE\" (50); see (#physical-types) for a complete list of values." + }, + 0x63c4: { + name: "TagChapterUID", + level: 4, + type: "u", + multiple: true, + "default": "0", + description: "A unique ID to identify the Chapter(s) the tags belong to." + }, + 0x63c5: { + name: "TagTrackUID", + level: 4, + type: "u", + multiple: true, + webm: true, + "default": "0", + description: "A unique ID to identify the Track(s) the tags belong to." + }, + 0x63c6: { + name: "TagAttachmentUID", + level: 4, + type: "u", + multiple: true, + "default": "0", + description: "A unique ID to identify the Attachment(s) the tags belong to." + }, + 0x63c9: { + name: "TagEditionUID", + level: 4, + type: "u", + multiple: true, + "default": "0", + description: "A unique ID to identify the EditionEntry(s) the tags belong to." + }, + 0x63ca: { + name: "TargetType", + cppname: "TagTargetType", + level: 4, + type: "s", + webm: true, + description: "An informational string that can be used to display the logical level of the target like \"ALBUM\", \"TRACK\", \"MOVIE\", \"CHAPTER\", etc ; see Section 6.4 of [@!MatroskaTags]." + }, + 0x6532: { + name: "SignedElement", + level: 2, + type: "b", + multiple: true, + webm: false, + description: "An element ID whose data will be used to compute the signature." + }, + 0x6624: { + name: "TrackTranslate", + level: 3, + type: "m", + multiple: true, + description: "The mapping between this `TrackEntry` and a track value in the given Chapter Codec." + }, + 0x66a5: { + name: "TrackTranslateTrackID", + level: 4, + type: "b", + mandatory: true, + description: "The binary value used to represent this `TrackEntry` in the chapter codec data. The format depends on the `ChapProcessCodecID` used; see (#chapprocesscodecid-element)." + }, + 0x66bf: { + name: "TrackTranslateCodec", + level: 4, + type: "u", + mandatory: true, + description: "This `TrackTranslate` applies to this chapter codec of the given chapter edition(s); see (#chapprocesscodecid-element)." + }, + 0x66fc: { + name: "TrackTranslateEditionUID", + level: 4, + type: "u", + multiple: true, + description: "Specify a chapter edition UID on which this `TrackTranslate` applies." + }, + 0x67c8: { + name: "SimpleTag", + cppname: "TagSimple", + level: 3, + type: "m", + mandatory: true, + multiple: true, + webm: true, + description: "Contains general information about the target." + }, + 0x68ca: { + name: "TargetTypeValue", + cppname: "TagTargetTypeValue", + level: 4, + type: "u", + mandatory: true, + webm: true, + "default": "50", + description: "A number to indicate the logical level of the target." + }, + 0x6911: { + name: "ChapProcessCommand", + cppname: "ChapterProcessCommand", + level: 5, + type: "m", + multiple: true, + description: "Contains all the commands associated to the Atom." + }, + 0x6922: { + name: "ChapProcessTime", + cppname: "ChapterProcessTime", + level: 6, + type: "u", + mandatory: true, + description: "Defines when the process command **SHOULD** be handled" + }, + 0x6924: { + name: "ChapterTranslate", + level: 2, + type: "m", + multiple: true, + description: "The mapping between this `Segment` and a segment value in the given Chapter Codec." + }, + 0x6933: { + name: "ChapProcessData", + cppname: "ChapterProcessData", + level: 6, + type: "b", + mandatory: true, + description: "Contains the command information. The data **SHOULD** be interpreted depending on the ChapProcessCodecID value. For ChapProcessCodecID = 1, the data correspond to the binary DVD cell pre/post commands; see (#menu-features) on DVD menus." + }, + 0x6944: { + name: "ChapProcess", + cppname: "ChapterProcess", + level: 4, + type: "m", + multiple: true, + description: "Contains all the commands associated to the Atom." + }, + 0x6955: { + name: "ChapProcessCodecID", + cppname: "ChapterProcessCodecID", + level: 5, + type: "u", + mandatory: true, + "default": "0", + description: "Contains the type of the codec used for the processing. A value of 0 means native Matroska processing (to be defined), a value of 1 means the DVD command set is used; see (#menu-features) on DVD menus. More codec IDs can be added later." + }, + 0x69a5: { + name: "ChapterTranslateID", + level: 3, + type: "b", + mandatory: true, + description: "The binary value used to represent this Segment in the chapter codec data. The format depends on the ChapProcessCodecID used; see (#chapprocesscodecid-element)." + }, + 0x69bf: { + name: "ChapterTranslateCodec", + level: 3, + type: "u", + mandatory: true, + description: "This `ChapterTranslate` applies to this chapter codec of the given chapter edition(s); see (#chapprocesscodecid-element)." + }, + 0x69fc: { + name: "ChapterTranslateEditionUID", + level: 3, + type: "u", + multiple: true, + description: "Specify a chapter edition UID on which this `ChapterTranslate` applies." + }, + 0x6d80: { + name: "ContentEncodings", + level: 3, + type: "m", + webm: true, + description: "Settings for several content encoding mechanisms like compression or encryption." + }, + 0x6de7: { + name: "MinCache", + cppname: "TrackMinCache", + level: 3, + type: "u", + mandatory: true, + "default": "0", + description: "The minimum number of frames a player **SHOULD** be able to cache during playback. If set to 0, the reference pseudo-cache system is not used." + }, + 0x6df8: { + name: "MaxCache", + cppname: "TrackMaxCache", + level: 3, + type: "u", + description: "The maximum cache size necessary to store referenced frames in and the current frame. 0 means no cache is needed." + }, + 0x6e67: { + name: "ChapterSegmentUID", + level: 4, + type: "b", + range: ">0", + description: "The SegmentUID of another Segment to play during this chapter." + }, + 0x6ebc: { + name: "ChapterSegmentEditionUID", + level: 4, + type: "u", + range: "not 0", + description: "The EditionUID to play from the Segment linked in ChapterSegmentUID. If ChapterSegmentEditionUID is undeclared, then no Edition of the linked Segment is used; see (#medium-linking) on medium-linking Segments." + }, + 0x6fab: { + name: "TrackOverlay", + level: 3, + type: "u", + multiple: true, + description: "Specify that this track is an overlay track for the Track specified (in the u-integer). That means when this track has a gap, see (#silenttracks-element) on SilentTracks, the overlay track **SHOULD** be used instead. The order of multiple TrackOverlay matters, the first one is the one that **SHOULD** be used. If not found it **SHOULD** be the second, etc." + }, + 0x7373: { + name: "Tag", + level: 2, + type: "m", + mandatory: true, + multiple: true, + webm: true, + description: "A single metadata descriptor." + }, + 0x7384: { + name: "SegmentFilename", + level: 2, + type: "8", + description: "A filename corresponding to this Segment." + }, + 0x73a4: { + name: "SegmentUID", + level: 2, + type: "b", + range: "not 0", + description: "A randomly generated unique ID to identify the Segment amongst many others (128 bits)." + }, + 0x73c4: { + name: "ChapterUID", + level: 4, + type: "u", + mandatory: true, + webm: true, + range: "not 0", + description: "A unique ID to identify the Chapter." + }, + 0x73c5: { + name: "TrackUID", + level: 3, + type: "u", + mandatory: true, + range: "not 0", + description: "A unique ID to identify the Track." + }, + 0x7446: { + name: "AttachmentLink", + cppname: "TrackAttachmentLink", + level: 3, + type: "u", + maxver: 3, + range: "not 0", + description: "The UID of an attachment that is used by this codec." + }, + 0x75a1: { + name: "BlockAdditions", + level: 3, + type: "m", + webm: true, + description: "Contain additional blocks to complete the main one. An EBML parser that has no knowledge of the Block structure could still see and use/skip these data." + }, + 0x75a2: { + name: "DiscardPadding", + level: 3, + type: "i", + minver: 4, + webm: true, + description: "Duration of the silent data added to the Block, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks) (padding at the end of the Block for positive value, at the beginning of the Block for negative value). The duration of DiscardPadding is not calculated in the duration of the TrackEntry and **SHOULD** be discarded during playback." + }, + 0x7670: { + name: "Projection", + cppname: "VideoProjection", + level: 4, + type: "m", + minver: 4, + webm: true, + description: "Describes the video projection details. Used to render spherical, VR videos or flipping videos horizontally/vertically." + }, + 0x7671: { + name: "ProjectionType", + cppname: "VideoProjectionType", + level: 5, + type: "u", + mandatory: true, + minver: 4, + webm: true, + "default": "0", + description: "Describes the projection used for this video track." + }, + 0x7672: { + name: "ProjectionPrivate", + cppname: "VideoProjectionPrivate", + level: 5, + type: "b", + minver: 4, + webm: true, + description: "Private data that only applies to a specific projection. * If `ProjectionType` equals 0 (Rectangular), then this element must not be present. * If `ProjectionType` equals 1 (Equirectangular), then this element must be present and contain the same binary data that would be stored inside an ISOBMFF Equirectangular Projection Box ('equi'). * If `ProjectionType` equals 2 (Cubemap), then this element must be present and contain the same binary data that would be stored inside an ISOBMFF Cubemap Projection Box ('cbmp'). * If `ProjectionType` equals 3 (Mesh), then this element must be present and contain the same binary data that would be stored inside an ISOBMFF Mesh Projection Box ('mshp')." + }, + 0x7673: { + name: "ProjectionPoseYaw", + cppname: "VideoProjectionPoseYaw", + level: 5, + type: "f", + mandatory: true, + minver: 4, + webm: true, + "default": "0x0p+0", + range: ">= -0xB4p+0, <= 0xB4p+0", + description: "Specifies a yaw rotation to the projection. Value represents a clockwise rotation, in degrees, around the up vector. This rotation must be applied before any `ProjectionPosePitch` or `ProjectionPoseRoll` rotations. The value of this element **MUST** be in the -180 to 180 degree range, both included. Setting `ProjectionPoseYaw` to 180 or -180 degrees, with the `ProjectionPoseRoll` and `ProjectionPosePitch` set to 0 degrees flips the image horizontally." + }, + 0x7674: { + name: "ProjectionPosePitch", + cppname: "VideoProjectionPosePitch", + level: 5, + type: "f", + mandatory: true, + minver: 4, + webm: true, + "default": "0x0p+0", + range: ">= -0x5Ap+0, <= 0x5Ap+0", + description: "Specifies a pitch rotation to the projection. Value represents a counter-clockwise rotation, in degrees, around the right vector. This rotation must be applied after the `ProjectionPoseYaw` rotation and before the `ProjectionPoseRoll` rotation. The value of this element **MUST** be in the -90 to 90 degree range, both included." + }, + 0x7675: { + name: "ProjectionPoseRoll", + cppname: "VideoProjectionPoseRoll", + level: 5, + type: "f", + mandatory: true, + minver: 4, + webm: true, + "default": "0x0p+0", + range: ">= -0xB4p+0, <= 0xB4p+0", + description: "Specifies a roll rotation to the projection. Value represents a counter-clockwise rotation, in degrees, around the forward vector. This rotation must be applied after the `ProjectionPoseYaw` and `ProjectionPosePitch` rotations. The value of this element **MUST** be in the -180 to 180 degree range, both included. Setting `ProjectionPoseRoll` to 180 or -180 degrees, the `ProjectionPoseYaw` to 180 or -180 degrees with `ProjectionPosePitch` set to 0 degrees flips the image vertically. Setting `ProjectionPoseRoll` to 180 or -180 degrees, with the `ProjectionPoseYaw` and `ProjectionPosePitch` set to 0 degrees flips the image horizontally and vertically." + }, + 0x78b5: { + name: "OutputSamplingFrequency", + cppname: "AudioOutputSamplingFreq", + level: 4, + type: "f", + range: "> 0x0p+0", + description: "Real output sampling frequency in Hz (used for SBR techniques)." + }, + 0x7ba9: { + name: "Title", + level: 2, + type: "8", + webm: true, + description: "General name of the Segment." + }, + 0x7d7b: { + name: "ChannelPositions", + cppname: "AudioPosition", + level: 4, + type: "b", + minver: 0, + maxver: 0, + description: "Table of horizontal angles for each successive channel." + }, + 0x7e5b: { + name: "SignatureElements", + level: 1, + type: "m", + webm: false, + description: "Contains elements that will be used to compute the signature." + }, + 0x7e7b: { + name: "SignatureElementList", + level: 2, + type: "m", + multiple: true, + webm: false, + i: "Cluster|Block|BlockAdditional", + description: "A list consists of a number of consecutive elements that represent one case where data is used in signature. Ex: means that the BlockAdditional of all Blocks in all Clusters is used for encryption." + }, + 0x7e8a: { + name: "SignatureAlgo", + level: 2, + type: "u", + webm: false, + description: "Signature algorithm used (1=RSA, 2=elliptic)." + }, + 0x7e9a: { + name: "SignatureHash", + level: 2, + type: "u", + webm: false, + description: "Hash algorithm used (1=SHA1-160, 2=MD5)." + }, + 0x7ea5: { + name: "SignaturePublicKey", + level: 2, + type: "b", + webm: false, + description: "The public key to use with the algorithm (in the case of a PKI-based signature)." + }, + 0x7eb5: { + name: "Signature", + level: 2, + type: "b", + webm: false, + description: "The signature of the data (until a new." + }, + 0x22b59c: { + name: "Language", + cppname: "TrackLanguage", + level: 3, + type: "s", + mandatory: true, + "default": "eng", + description: "Specifies the language of the track in the Matroska languages form; see (#language-codes) on language codes. This Element **MUST** be ignored if the LanguageIETF Element is used in the same TrackEntry." + }, + 0x22b59d: { + name: "LanguageIETF", + level: 3, + type: "s", + minver: 4, + description: "Specifies the language of the track according to [@!BCP47] and using the IANA Language Subtag Registry [@!IANALangRegistry]. If this Element is used, then any Language Elements used in the same TrackEntry **MUST** be ignored." + }, + 0x23314f: { + name: "TrackTimestampScale", + cppname: "TrackTimecodeScale", + level: 3, + type: "f", + mandatory: true, + maxver: 3, + "default": "0x1p+0", + range: "> 0x0p+0", + description: "DEPRECATED, DO NOT USE. The scale to apply on this track to work at normal speed in relation with other tracks (mostly used to adjust video speed when the audio length differs)." + }, + 0x234e7a: { + name: "DefaultDecodedFieldDuration", + cppname: "TrackDefaultDecodedFieldDuration", + level: 3, + type: "u", + minver: 4, + range: "not 0", + description: "The period between two successive fields at the output of the decoding process, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks). see (#defaultdecodedfieldduration) for more information" + }, + 0x2383e3: { + name: "FrameRate", + cppname: "VideoFrameRate", + level: 4, + type: "f", + minver: 0, + maxver: 0, + range: "> 0x0p+0", + description: "Number of frames per second. This value is Informational only. It is intended for constant frame rate streams, and **SHOULD NOT** be used for a variable frame rate TrackEntry." + }, + 0x23e383: { + name: "DefaultDuration", + cppname: "TrackDefaultDuration", + level: 3, + type: "u", + range: "not 0", + description: "Number of nanoseconds per frame, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks) (frame in the Matroska sense -- one Element put into a (Simple)Block)." + }, + 0x258688: { + name: "CodecName", + level: 3, + type: "8", + description: "A human-readable string specifying the codec." + }, + 0x26b240: { + name: "CodecDownloadURL", + level: 3, + type: "s", + multiple: true, + minver: 0, + maxver: 0, + description: "A URL to download about the codec used." + }, + 0x2ad7b1: { + name: "TimestampScale", + cppname: "TimecodeScale", + level: 2, + type: "u", + mandatory: true, + "default": "1000000", + range: "not 0", + description: "Base unit for Segment Ticks and Track Ticks, in nanoseconds. A TimestampScale value of 1.000.000 means scaled timestamps in the Segment are expressed in milliseconds; see (#timestamps) on how to interpret timestamps." + }, + 0x2ad7b2: { + name: "TimecodeScaleDenominator", + level: 2, + type: "u", + mandatory: true, + minver: 4, + "default": "1000000000", + description: "Timestamp scale numerator, see TimecodeScale." + }, + 0x2eb524: { + name: "UncompressedFourCC", + cppname: "VideoColourSpace", + level: 4, + type: "b", + description: "Specify the uncompressed pixel format used for the Track's data as a FourCC. This value is similar in scope to the biCompression value of AVI's `BITMAPINFO` [@?AVIFormat]. See the YUV video formats [@?FourCC-YUV] and RGB video formats [@?FourCC-RGB] for common values." + }, + 0x2fb523: { + name: "GammaValue", + cppname: "VideoGamma", + level: 4, + type: "f", + minver: 0, + maxver: 0, + range: "> 0x0p+0", + description: "Gamma Value." + }, + 0x3a9697: { + name: "CodecSettings", + level: 3, + type: "8", + minver: 0, + maxver: 0, + description: "A string describing the encoding setting used." + }, + 0x3b4040: { + name: "CodecInfoURL", + level: 3, + type: "s", + multiple: true, + minver: 0, + maxver: 0, + description: "A URL to find information about the codec used." + }, + 0x3c83ab: { + name: "PrevFilename", + level: 2, + type: "8", + description: "A filename corresponding to the file of the previous Linked Segment." + }, + 0x3cb923: { + name: "PrevUID", + level: 2, + type: "b", + description: "A unique ID to identify the previous Segment of a Linked Segment (128 bits)." + }, + 0x3e83bb: { + name: "NextFilename", + level: 2, + type: "8", + description: "A filename corresponding to the file of the next Linked Segment." + }, + 0x3eb923: { + name: "NextUID", + level: 2, + type: "b", + description: "A unique ID to identify the next Segment of a Linked Segment (128 bits)." + }, + 0x1043a770: { + name: "Chapters", + level: 1, + type: "m", + webm: true, + description: "A system to define basic menus and partition data. For more detailed information, look at the Chapters explanation in (#chapters)." + }, + 0x114d9b74: { + name: "SeekHead", + level: 1, + type: "m", + multiple: true, + description: "Contains the Segment Position of other Top-Level Elements." + }, + 0x1254c367: { + name: "Tags", + level: 1, + type: "m", + multiple: true, + webm: true, + description: "Element containing metadata describing Tracks, Editions, Chapters, Attachments, or the Segment as a whole. A list of valid tags can be found in [@!MatroskaTags]." + }, + 0x1549a966: { + name: "Info", + level: 1, + type: "m", + mandatory: true, + description: "Contains general information about the Segment." + }, + 0x1654ae6b: { + name: "Tracks", + level: 1, + type: "m", + description: "A Top-Level Element of information with many tracks described." + }, + 0x18538067: { + name: "Segment", + level: 0, + type: "m", + mandatory: true, + description: "The Root Element that contains all other Top-Level Elements (Elements defined only at Level 1). A Matroska file is composed of 1 Segment." + }, + 0x1941a469: { + name: "Attachments", + level: 1, + type: "m", + description: "Contain attached files." + }, + 0x1a45dfa3: { + name: "EBML", + level: "0", + type: "m", + mandatory: true, + multiple: false, + minver: 1, + description: "Set the EBML characteristics of the data to follow. Each EBML document has to start with this." + }, + 0x1b538667: { + name: "SignatureSlot", + level: 1, + type: "m", + multiple: true, + webm: false, + description: "Contain signature of some (coming) elements in the stream." + }, + 0x1c53bb6b: { + name: "Cues", + level: 1, + type: "m", + description: "A Top-Level Element to speed seeking access. All entries are local to the Segment." + }, + 0x1f43b675: { + name: "Cluster", + level: 1, + type: "m", + multiple: true, + description: "The Top-Level Element containing the (monolithic) Block structure." + } +}; + +var byName = {}; + +var schema = { + byEbmlID: byEbmlID, + byName: byName +} + +for ( var ebmlID in byEbmlID) { + var desc = byEbmlID[ebmlID]; + byName[desc.name.replace('-', '_')] = parseInt(ebmlID, 10); +} + +module.exports = schema; + + +/***/ }), + +/***/ "./node_modules/ts-ebml/lib/EBMLDecoder.js": +/*!*************************************************!*\ + !*** ./node_modules/ts-ebml/lib/EBMLDecoder.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tools_1 = __webpack_require__(/*! ./tools */ "./node_modules/ts-ebml/lib/tools.js"); +var int64_buffer_1 = __webpack_require__(/*! int64-buffer */ "./node_modules/int64-buffer/int64-buffer.js"); +var tools = __webpack_require__(/*! ./tools */ "./node_modules/ts-ebml/lib/tools.js"); +var schema = __webpack_require__(/*! matroska/lib/schema */ "./node_modules/matroska/lib/schema.js"); +var byEbmlID = schema.byEbmlID; +// https://www.matroska.org/technical/specs/index.html +var State; +(function (State) { + State[State["STATE_TAG"] = 1] = "STATE_TAG"; + State[State["STATE_SIZE"] = 2] = "STATE_SIZE"; + State[State["STATE_CONTENT"] = 3] = "STATE_CONTENT"; +})(State || (State = {})); +var EBMLDecoder = (function () { + function EBMLDecoder() { + this._buffer = new tools_1.Buffer(0); + this._tag_stack = []; + this._state = State.STATE_TAG; + this._cursor = 0; + this._total = 0; + this._schema = byEbmlID; + this._result = []; + } + EBMLDecoder.prototype.decode = function (chunk) { + this.readChunk(chunk); + var diff = this._result; + this._result = []; + return diff; + }; + EBMLDecoder.prototype.readChunk = function (chunk) { + // 読みかけの(読めなかった) this._buffer と 新しい chunk を合わせて読み直す + this._buffer = tools.concat([this._buffer, new tools_1.Buffer(chunk)]); + while (this._cursor < this._buffer.length) { + // console.log(this._cursor, this._total, this._tag_stack); + if (this._state === State.STATE_TAG && !this.readTag()) { + break; + } + if (this._state === State.STATE_SIZE && !this.readSize()) { + break; + } + if (this._state === State.STATE_CONTENT && !this.readContent()) { + break; + } + } + }; + EBMLDecoder.prototype.getSchemaInfo = function (tagNum) { + return this._schema[tagNum] || { + name: "unknown", + level: -1, + type: "unknown", + description: "unknown" + }; + }; + /** + * vint された parsing tag + * @return - return false when waiting for more data + */ + EBMLDecoder.prototype.readTag = function () { + // tag.length が buffer の外にある + if (this._cursor >= this._buffer.length) { + return false; + } + // read ebml id vint without first byte + var tag = tools_1.readVint(this._buffer, this._cursor); + // tag が読めなかった + if (tag == null) { + return false; + } + // >>>>>>>>> + // tag 識別子 + //const tagStr = this._buffer.toString("hex", this._cursor, this._cursor + tag.length); + //const tagNum = parseInt(tagStr, 16); + // 上と等価 + var buf = this._buffer.slice(this._cursor, this._cursor + tag.length); + var tagNum = buf.reduce(function (o, v, i, arr) { return o + v * Math.pow(16, 2 * (arr.length - 1 - i)); }, 0); + var schema = this.getSchemaInfo(tagNum); + var tagObj = { + EBML_ID: tagNum.toString(16), + schema: schema, + type: schema.type, + name: schema.name, + level: schema.level, + tagStart: this._total, + tagEnd: this._total + tag.length, + sizeStart: this._total + tag.length, + sizeEnd: null, + dataStart: null, + dataEnd: null, + dataSize: null, + data: null + }; + // | tag: vint | size: vint | data: Buffer(size) | + this._tag_stack.push(tagObj); + // <<<<<<<< + // ポインタを進める + this._cursor += tag.length; + this._total += tag.length; + // 読み込み状態変更 + this._state = State.STATE_SIZE; + return true; + }; + /** + * vint された現在のタグの内容の大きさを読み込む + * @return - return false when waiting for more data + */ + EBMLDecoder.prototype.readSize = function () { + // tag.length が buffer の外にある + if (this._cursor >= this._buffer.length) { + return false; + } + // read ebml datasize vint without first byte + var size = tools_1.readVint(this._buffer, this._cursor); + // まだ読めない + if (size == null) { + return false; + } + // >>>>>>>>> + // current tag の data size 決定 + var tagObj = this._tag_stack[this._tag_stack.length - 1]; + tagObj.sizeEnd = tagObj.sizeStart + size.length; + tagObj.dataStart = tagObj.sizeEnd; + tagObj.dataSize = size.value; + if (size.value === -1) { + // unknown size + tagObj.dataEnd = -1; + if (tagObj.type === "m") { + tagObj.unknownSize = true; + } + } + else { + tagObj.dataEnd = tagObj.sizeEnd + size.value; + } + // <<<<<<<< + // ポインタを進める + this._cursor += size.length; + this._total += size.length; + this._state = State.STATE_CONTENT; + return true; + }; + /** + * データ読み込み + */ + EBMLDecoder.prototype.readContent = function () { + var tagObj = this._tag_stack[this._tag_stack.length - 1]; + // master element は子要素を持つので生データはない + if (tagObj.type === 'm') { + // console.log('content should be tags'); + tagObj.isEnd = false; + this._result.push(tagObj); + this._state = State.STATE_TAG; + // この Mastert Element は空要素か + if (tagObj.dataSize === 0) { + // 即座に終了タグを追加 + var elm = Object.assign({}, tagObj, { isEnd: true }); + this._result.push(elm); + this._tag_stack.pop(); // スタックからこのタグを捨てる + } + return true; + } + // waiting for more data + if (this._buffer.length < this._cursor + tagObj.dataSize) { + return false; + } + // タグの中身の生データ + var data = this._buffer.slice(this._cursor, this._cursor + tagObj.dataSize); + // 読み終わったバッファを捨てて読み込んでいる部分のバッファのみ残す + this._buffer = this._buffer.slice(this._cursor + tagObj.dataSize); + tagObj.data = data; + // >>>>>>>>> + switch (tagObj.type) { + //case "m": break; + // Master-Element - contains other EBML sub-elements of the next lower level + case "u": + tagObj.value = data.readUIntBE(0, data.length); + break; + // Unsigned Integer - Big-endian, any size from 1 to 8 octets + case "i": + tagObj.value = data.readIntBE(0, data.length); + break; + // Signed Integer - Big-endian, any size from 1 to 8 octets + case "f": + tagObj.value = tagObj.dataSize === 4 ? data.readFloatBE(0) : + tagObj.dataSize === 8 ? data.readDoubleBE(0) : + (console.warn("cannot read " + tagObj.dataSize + " octets float. failback to 0"), 0); + break; + // Float - Big-endian, defined for 4 and 8 octets (32, 64 bits) + case "s": + tagObj.value = data.toString("ascii"); + break; // ascii + // Printable ASCII (0x20 to 0x7E), zero-padded when needed + case "8": + tagObj.value = data.toString("utf8"); + break; + // Unicode string, zero padded when needed (RFC 2279) + case "b": + tagObj.value = data; + break; + // Binary - not interpreted by the parser + case "d": + tagObj.value = tools_1.convertEBMLDateToJSDate(new int64_buffer_1.Int64BE(data).toNumber()); + break; + } + if (tagObj.value === null) { + throw new Error("unknown tag type:" + tagObj.type); + } + this._result.push(tagObj); + // <<<<<<<< + // ポインタを進める + this._total += tagObj.dataSize; + // タグ待ちモードに変更 + this._state = State.STATE_TAG; + this._cursor = 0; + this._tag_stack.pop(); // remove the object from the stack + while (this._tag_stack.length > 0) { + var topEle = this._tag_stack[this._tag_stack.length - 1]; + // 親が不定長サイズなので閉じタグは期待できない + if (topEle.dataEnd < 0) { + this._tag_stack.pop(); // 親タグを捨てる + return true; + } + // 閉じタグの来るべき場所まで来たかどうか + if (this._total < topEle.dataEnd) { + break; + } + // 閉じタグを挿入すべきタイミングが来た + if (topEle.type !== "m") { + throw new Error("parent element is not master element"); + } + var elm = Object.assign({}, topEle, { isEnd: true }); + this._result.push(elm); + this._tag_stack.pop(); + } + return true; + }; + return EBMLDecoder; +}()); +exports["default"] = EBMLDecoder; + + +/***/ }), + +/***/ "./node_modules/ts-ebml/lib/EBMLEncoder.js": +/*!*************************************************!*\ + !*** ./node_modules/ts-ebml/lib/EBMLEncoder.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tools = __webpack_require__(/*! ./tools */ "./node_modules/ts-ebml/lib/tools.js"); +var tools_1 = __webpack_require__(/*! ./tools */ "./node_modules/ts-ebml/lib/tools.js"); +var schema = __webpack_require__(/*! matroska/lib/schema */ "./node_modules/matroska/lib/schema.js"); +var byEbmlID = schema.byEbmlID; +var EBMLEncoder = (function () { + function EBMLEncoder() { + this._schema = byEbmlID; + this._buffers = []; + this._stack = []; + } + EBMLEncoder.prototype.encode = function (elms) { + var _this = this; + return tools.concat(elms.reduce(function (lst, elm) { + return lst.concat(_this.encodeChunk(elm)); + }, [])).buffer; + }; + EBMLEncoder.prototype.encodeChunk = function (elm) { + if (elm.type === "m") { + if (!elm.isEnd) { + this.startTag(elm); + } + else { + this.endTag(elm); + } + } + else { + this.writeTag(elm); + } + return this.flush(); + }; + EBMLEncoder.prototype.flush = function () { + var ret = this._buffers; + this._buffers = []; + return ret; + }; + EBMLEncoder.prototype.getSchemaInfo = function (tagName) { + var tagNums = Object.keys(this._schema).map(Number); + for (var i = 0; i < tagNums.length; i++) { + var tagNum = tagNums[i]; + if (this._schema[tagNum].name === tagName) { + return new tools_1.Buffer(tagNum.toString(16), 'hex'); + } + } + return null; + }; + EBMLEncoder.prototype.writeTag = function (elm) { + var tagName = elm.name; + var tagId = this.getSchemaInfo(tagName); + var tagData = elm.data; + if (tagId == null) { + throw new Error('No schema entry found for ' + tagName); + } + var data = tools.encodeTag(tagId, tagData); + /** + * 親要素が閉じタグあり(isEnd)なら閉じタグが来るまで待つ(children queに入る) + */ + if (this._stack.length > 0) { + var last = this._stack[this._stack.length - 1]; + last.children.push({ + tagId: tagId, + elm: elm, + children: [], + data: data + }); + return; + } + this._buffers = this._buffers.concat(data); + return; + }; + EBMLEncoder.prototype.startTag = function (elm) { + var tagName = elm.name; + var tagId = this.getSchemaInfo(tagName); + if (tagId == null) { + throw new Error('No schema entry found for ' + tagName); + } + /** + * 閉じタグ不定長の場合はスタックに積まずに即時バッファに書き込む + */ + if (elm.unknownSize) { + var data = tools.encodeTag(tagId, new tools_1.Buffer(0), elm.unknownSize); + this._buffers = this._buffers.concat(data); + return; + } + var tag = { + tagId: tagId, + elm: elm, + children: [], + data: null + }; + if (this._stack.length > 0) { + this._stack[this._stack.length - 1].children.push(tag); + } + this._stack.push(tag); + }; + EBMLEncoder.prototype.endTag = function (elm) { + var tagName = elm.name; + var tag = this._stack.pop(); + if (tag == null) { + throw new Error("EBML structure is broken"); + } + if (tag.elm.name !== elm.name) { + throw new Error("EBML structure is broken"); + } + var childTagDataBuffers = tag.children.reduce(function (lst, child) { + if (child.data === null) { + throw new Error("EBML structure is broken"); + } + return lst.concat(child.data); + }, []); + var childTagDataBuffer = tools.concat(childTagDataBuffers); + if (tag.elm.type === "m") { + tag.data = tools.encodeTag(tag.tagId, childTagDataBuffer, tag.elm.unknownSize); + } + else { + tag.data = tools.encodeTag(tag.tagId, childTagDataBuffer); + } + if (this._stack.length < 1) { + this._buffers = this._buffers.concat(tag.data); + } + }; + return EBMLEncoder; +}()); +exports["default"] = EBMLEncoder; + + +/***/ }), + +/***/ "./node_modules/ts-ebml/lib/EBMLReader.js": +/*!************************************************!*\ + !*** ./node_modules/ts-ebml/lib/EBMLReader.js ***! + \************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", ({ value: true })); +var events_1 = __webpack_require__(/*! events */ "./node_modules/ts-ebml/node_modules/events/events.js"); +var tools = __webpack_require__(/*! ./tools */ "./node_modules/ts-ebml/lib/tools.js"); +/** + * This is an informal code for reference. + * EBMLReader is a class for getting information to enable seeking Webm recorded by MediaRecorder. + * So please do not use for regular WebM files. + */ +var EBMLReader = (function (_super) { + __extends(EBMLReader, _super); + function EBMLReader() { + var _this = _super.call(this) || this; + _this.logGroup = ""; + _this.hasLoggingStarted = false; + _this.metadataloaded = false; + _this.chunks = []; + _this.stack = []; + _this.segmentOffset = 0; + _this.last2SimpleBlockVideoTrackTimecode = [0, 0]; + _this.last2SimpleBlockAudioTrackTimecode = [0, 0]; + _this.lastClusterTimecode = 0; + _this.lastClusterPosition = 0; + _this.timecodeScale = 1000000; // webm default TimecodeScale is 1ms + _this.metadataSize = 0; + _this.metadatas = []; + _this.cues = []; + _this.firstVideoBlockRead = false; + _this.firstAudioBlockRead = false; + _this.currentTrack = { TrackNumber: -1, TrackType: -1, DefaultDuration: null, CodecDelay: null }; + _this.trackTypes = []; + _this.trackDefaultDuration = []; + _this.trackCodecDelay = []; + _this.trackInfo = { type: "nothing" }; + _this.ended = false; + _this.logging = false; + _this.use_duration_every_simpleblock = false; + _this.use_webp = false; + _this.use_segment_info = true; + _this.drop_default_duration = true; + return _this; + } + /** + * emit final state. + */ + EBMLReader.prototype.stop = function () { + this.ended = true; + this.emit_segment_info(); + // clean up any unclosed Master Elements at the end of the stream. + while (this.stack.length) { + this.stack.pop(); + if (this.logging) { + console.groupEnd(); + } + } + // close main group if set, logging is enabled, and has actually logged anything. + if (this.logging && this.hasLoggingStarted && this.logGroup) { + console.groupEnd(); + } + }; + /** + * emit chunk info + */ + EBMLReader.prototype.emit_segment_info = function () { + var data = this.chunks; + this.chunks = []; + if (!this.metadataloaded) { + this.metadataloaded = true; + this.metadatas = data; + var videoTrackNum = this.trackTypes.indexOf(1); // find first video track + var audioTrackNum = this.trackTypes.indexOf(2); // find first audio track + this.trackInfo = videoTrackNum >= 0 && audioTrackNum >= 0 ? { type: "both", trackNumber: videoTrackNum } + : videoTrackNum >= 0 ? { type: "video", trackNumber: videoTrackNum } + : audioTrackNum >= 0 ? { type: "audio", trackNumber: audioTrackNum } + : { type: "nothing" }; + if (!this.use_segment_info) { + return; + } + this.emit("metadata", { data: data, metadataSize: this.metadataSize }); + } + else { + if (!this.use_segment_info) { + return; + } + var timecode = this.lastClusterTimecode; + var duration = this.duration; + var timecodeScale = this.timecodeScale; + this.emit("cluster", { timecode: timecode, data: data }); + this.emit("duration", { timecodeScale: timecodeScale, duration: duration }); + } + }; + EBMLReader.prototype.read = function (elm) { + var _this = this; + var drop = false; + if (this.ended) { + // reader is finished + return; + } + if (elm.type === "m") { + // 閉じタグの自動挿入 + if (elm.isEnd) { + this.stack.pop(); + } + else { + var parent_1 = this.stack[this.stack.length - 1]; + if (parent_1 != null && parent_1.level >= elm.level) { + // 閉じタグなしでレベルが下がったら閉じタグを挿入 + this.stack.pop(); + // From http://w3c.github.io/media-source/webm-byte-stream-format.html#webm-media-segments + // This fixes logging for webm streams with Cluster of unknown length and no Cluster closing elements. + if (this.logging) { + console.groupEnd(); + } + parent_1.dataEnd = elm.dataEnd; + parent_1.dataSize = elm.dataEnd - parent_1.dataStart; + parent_1.unknownSize = false; + var o = Object.assign({}, parent_1, { name: parent_1.name, type: parent_1.type, isEnd: true }); + this.chunks.push(o); + } + this.stack.push(elm); + } + } + if (elm.type === "m" && elm.name == "Segment") { + if (this.segmentOffset != 0) { + console.warn("Multiple segments detected!"); + } + this.segmentOffset = elm.dataStart; + this.emit("segment_offset", this.segmentOffset); + } + else if (elm.type === "b" && elm.name === "SimpleBlock") { + var _a = tools.ebmlBlock(elm.data), timecode = _a.timecode, trackNumber = _a.trackNumber, frames_1 = _a.frames; + if (this.trackTypes[trackNumber] === 1) { + if (!this.firstVideoBlockRead) { + this.firstVideoBlockRead = true; + if (this.trackInfo.type === "both" || this.trackInfo.type === "video") { + var CueTime = this.lastClusterTimecode + timecode; + this.cues.push({ CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: CueTime }); + this.emit("cue_info", { CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: this.lastClusterTimecode }); + this.emit("cue", { CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: CueTime }); + } + } + this.last2SimpleBlockVideoTrackTimecode = [this.last2SimpleBlockVideoTrackTimecode[1], timecode]; + } + else if (this.trackTypes[trackNumber] === 2) { + if (!this.firstAudioBlockRead) { + this.firstAudioBlockRead = true; + if (this.trackInfo.type === "audio") { + var CueTime = this.lastClusterTimecode + timecode; + this.cues.push({ CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: CueTime }); + this.emit("cue_info", { CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: this.lastClusterTimecode }); + this.emit("cue", { CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: CueTime }); + } + } + this.last2SimpleBlockAudioTrackTimecode = [this.last2SimpleBlockAudioTrackTimecode[1], timecode]; + } + if (this.use_duration_every_simpleblock) { + this.emit("duration", { timecodeScale: this.timecodeScale, duration: this.duration }); + } + if (this.use_webp) { + frames_1.forEach(function (frame) { + var startcode = frame.slice(3, 6).toString("hex"); + if (startcode !== "9d012a") { + return; + } + ; // VP8 の場合 + var webpBuf = tools.VP8BitStreamToRiffWebPBuffer(frame); + var webp = new Blob([webpBuf], { type: "image/webp" }); + var currentTime = _this.duration; + _this.emit("webp", { currentTime: currentTime, webp: webp }); + }); + } + } + else if (elm.type === "m" && elm.name === "Cluster" && elm.isEnd === false) { + this.firstVideoBlockRead = false; + this.firstAudioBlockRead = false; + this.emit_segment_info(); + this.emit("cluster_ptr", elm.tagStart); + this.lastClusterPosition = elm.tagStart; + } + else if (elm.type === "u" && elm.name === "Timecode") { + this.lastClusterTimecode = elm.value; + } + else if (elm.type === "u" && elm.name === "TimecodeScale") { + this.timecodeScale = elm.value; + } + else if (elm.type === "m" && elm.name === "TrackEntry") { + if (elm.isEnd) { + this.trackTypes[this.currentTrack.TrackNumber] = this.currentTrack.TrackType; + this.trackDefaultDuration[this.currentTrack.TrackNumber] = this.currentTrack.DefaultDuration; + this.trackCodecDelay[this.currentTrack.TrackNumber] = this.currentTrack.CodecDelay; + } + else { + this.currentTrack = { TrackNumber: -1, TrackType: -1, DefaultDuration: null, CodecDelay: null }; + } + } + else if (elm.type === "u" && elm.name === "TrackType") { + this.currentTrack.TrackType = elm.value; + } + else if (elm.type === "u" && elm.name === "TrackNumber") { + this.currentTrack.TrackNumber = elm.value; + } + else if (elm.type === "u" && elm.name === "CodecDelay") { + this.currentTrack.CodecDelay = elm.value; + } + else if (elm.type === "u" && elm.name === "DefaultDuration") { + // media source api は DefaultDuration を計算するとバグる。 + // https://bugs.chromium.org/p/chromium/issues/detail?id=606000#c22 + // chrome 58 ではこれを回避するために DefaultDuration 要素を抜き取った。 + // chrome 58 以前でもこのタグを抜き取ることで回避できる + if (this.drop_default_duration) { + console.warn("DefaultDuration detected!, remove it"); + drop = true; + } + else { + this.currentTrack.DefaultDuration = elm.value; + } + } + else if (elm.name === "unknown") { + console.warn(elm); + } + if (!this.metadataloaded && elm.dataEnd > 0) { + this.metadataSize = elm.dataEnd; + } + if (!drop) { + this.chunks.push(elm); + } + if (this.logging) { + this.put(elm); + } + }; + Object.defineProperty(EBMLReader.prototype, "duration", { + /** + * DefaultDuration が定義されている場合は最後のフレームのdurationも考慮する + * 単位 timecodeScale + * + * !!! if you need duration with seconds !!! + * ```js + * const nanosec = reader.duration * reader.timecodeScale; + * const sec = nanosec / 1000 / 1000 / 1000; + * ``` + */ + get: function () { + if (this.trackInfo.type === "nothing") { + console.warn("no video, no audio track"); + return 0; + } + // defaultDuration は 生の nano sec + var defaultDuration = 0; + // nanoseconds + var codecDelay = 0; + var lastTimecode = 0; + var _defaultDuration = this.trackDefaultDuration[this.trackInfo.trackNumber]; + if (typeof _defaultDuration === "number") { + defaultDuration = _defaultDuration; + } + else { + // https://bugs.chromium.org/p/chromium/issues/detail?id=606000#c22 + // default duration がないときに使う delta + if (this.trackInfo.type === "both") { + if (this.last2SimpleBlockAudioTrackTimecode[1] > this.last2SimpleBlockVideoTrackTimecode[1]) { + // audio diff + defaultDuration = (this.last2SimpleBlockAudioTrackTimecode[1] - this.last2SimpleBlockAudioTrackTimecode[0]) * this.timecodeScale; + // audio delay + var delay = this.trackCodecDelay[this.trackTypes.indexOf(2)]; // 2 => audio + if (typeof delay === "number") { + codecDelay = delay; + } + // audio timecode + lastTimecode = this.last2SimpleBlockAudioTrackTimecode[1]; + } + else { + // video diff + defaultDuration = (this.last2SimpleBlockVideoTrackTimecode[1] - this.last2SimpleBlockVideoTrackTimecode[0]) * this.timecodeScale; + // video delay + var delay = this.trackCodecDelay[this.trackTypes.indexOf(1)]; // 1 => video + if (typeof delay === "number") { + codecDelay = delay; + } + // video timecode + lastTimecode = this.last2SimpleBlockVideoTrackTimecode[1]; + } + } + else if (this.trackInfo.type === "video") { + defaultDuration = (this.last2SimpleBlockVideoTrackTimecode[1] - this.last2SimpleBlockVideoTrackTimecode[0]) * this.timecodeScale; + var delay = this.trackCodecDelay[this.trackInfo.trackNumber]; // 2 => audio + if (typeof delay === "number") { + codecDelay = delay; + } + lastTimecode = this.last2SimpleBlockVideoTrackTimecode[1]; + } + else if (this.trackInfo.type === "audio") { + defaultDuration = (this.last2SimpleBlockAudioTrackTimecode[1] - this.last2SimpleBlockAudioTrackTimecode[0]) * this.timecodeScale; + var delay = this.trackCodecDelay[this.trackInfo.trackNumber]; // 1 => video + if (typeof delay === "number") { + codecDelay = delay; + } + lastTimecode = this.last2SimpleBlockAudioTrackTimecode[1]; + } // else { not reached } + } + // convert to timecodescale + var duration_nanosec = ((this.lastClusterTimecode + lastTimecode) * this.timecodeScale) + defaultDuration - codecDelay; + var duration = duration_nanosec / this.timecodeScale; + return Math.floor(duration); + }, + enumerable: true, + configurable: true + }); + EBMLReader.prototype.addListener = function (event, listener) { + return _super.prototype.addListener.call(this, event, listener); + }; + EBMLReader.prototype.put = function (elm) { + if (!this.hasLoggingStarted) { + this.hasLoggingStarted = true; + if (this.logging && this.logGroup) { + console.groupCollapsed(this.logGroup); + } + } + if (elm.type === "m") { + if (elm.isEnd) { + console.groupEnd(); + } + else { + console.group(elm.name + ":" + elm.tagStart); + } + } + else if (elm.type === "b") { + // for debug + //if(elm.name === "SimpleBlock"){ + //const o = EBML.tools.ebmlBlock(elm.value); + //console.log(elm.name, elm.type, o.trackNumber, o.timecode); + //}else{ + console.log(elm.name, elm.type); + //} + } + else { + console.log(elm.name, elm.tagStart, elm.type, elm.value); + } + }; + return EBMLReader; +}(events_1.EventEmitter)); +exports["default"] = EBMLReader; +; +; +; +; + + +/***/ }), + +/***/ "./node_modules/ts-ebml/lib/index.js": +/*!*******************************************!*\ + !*** ./node_modules/ts-ebml/lib/index.js ***! + \*******************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +var EBMLDecoder_1 = __webpack_require__(/*! ./EBMLDecoder */ "./node_modules/ts-ebml/lib/EBMLDecoder.js"); +exports.Decoder = EBMLDecoder_1.default; +var EBMLEncoder_1 = __webpack_require__(/*! ./EBMLEncoder */ "./node_modules/ts-ebml/lib/EBMLEncoder.js"); +exports.Encoder = EBMLEncoder_1.default; +var EBMLReader_1 = __webpack_require__(/*! ./EBMLReader */ "./node_modules/ts-ebml/lib/EBMLReader.js"); +exports.Reader = EBMLReader_1.default; +var tools = __webpack_require__(/*! ./tools */ "./node_modules/ts-ebml/lib/tools.js"); +exports.tools = tools; +var version = (__webpack_require__(/*! ../package.json */ "./node_modules/ts-ebml/package.json").version); +exports.version = version; + + +/***/ }), + +/***/ "./node_modules/ts-ebml/lib/tools.js": +/*!*******************************************!*\ + !*** ./node_modules/ts-ebml/lib/tools.js ***! + \*******************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +/// +var int64_buffer_1 = __webpack_require__(/*! int64-buffer */ "./node_modules/int64-buffer/int64-buffer.js"); +var EBMLEncoder_1 = __webpack_require__(/*! ./EBMLEncoder */ "./node_modules/ts-ebml/lib/EBMLEncoder.js"); +var _Buffer = __webpack_require__(/*! buffer/ */ "./node_modules/buffer/index.js"); +var _tools = __webpack_require__(/*! ebml/lib/ebml/tools */ "./node_modules/ebml/lib/ebml/tools.js"); +var _block = __webpack_require__(/*! ebml-block */ "./node_modules/ebml-block/index.js"); +exports.Buffer = _Buffer.Buffer; +exports.readVint = _tools.readVint; +exports.writeVint = _tools.writeVint; +exports.ebmlBlock = _block; +function readBlock(buf) { + return exports.ebmlBlock(new exports.Buffer(buf)); +} +exports.readBlock = readBlock; +/** + * @param end - if end === false then length is unknown + */ +function encodeTag(tagId, tagData, unknownSize) { + if (unknownSize === void 0) { unknownSize = false; } + return concat([ + tagId, + unknownSize ? + new exports.Buffer('01ffffffffffffff', 'hex') : + exports.writeVint(tagData.length), + tagData + ]); +} +exports.encodeTag = encodeTag; +/** + * @return - SimpleBlock to WebP Filter + */ +function WebPFrameFilter(elms) { + return WebPBlockFilter(elms).reduce(function (lst, elm) { + var o = exports.ebmlBlock(elm.data); + return o.frames.reduce(function (lst, frame) { + // https://developers.Blob.com/speed/webp/docs/riff_container + var webpBuf = VP8BitStreamToRiffWebPBuffer(frame); + var webp = new Blob([webpBuf], { type: "image/webp" }); + return lst.concat(webp); + }, lst); + }, []); +} +exports.WebPFrameFilter = WebPFrameFilter; +/** + * WebP ファイルにできる SimpleBlock の パスフィルタ + */ +function WebPBlockFilter(elms) { + return elms.reduce(function (lst, elm) { + if (elm.type !== "b") { + return lst; + } + if (elm.name !== "SimpleBlock") { + return lst; + } + var o = exports.ebmlBlock(elm.data); + var hasWebP = o.frames.some(function (frame) { + // https://tools.ietf.org/html/rfc6386#section-19.1 + var startcode = frame.slice(3, 6).toString("hex"); + return startcode === "9d012a"; + }); + if (!hasWebP) { + return lst; + } + return lst.concat(elm); + }, []); +} +exports.WebPBlockFilter = WebPBlockFilter; +/** + * @param frame - VP8 BitStream のうち startcode をもつ frame + * @return - WebP ファイルの ArrayBuffer + */ +function VP8BitStreamToRiffWebPBuffer(frame) { + var VP8Chunk = createRIFFChunk("VP8 ", frame); + var WebPChunk = concat([ + new exports.Buffer("WEBP", "ascii"), + VP8Chunk + ]); + return createRIFFChunk("RIFF", WebPChunk); +} +exports.VP8BitStreamToRiffWebPBuffer = VP8BitStreamToRiffWebPBuffer; +/** + * RIFF データチャンクを作る + */ +function createRIFFChunk(FourCC, chunk) { + var chunkSize = new exports.Buffer(4); + chunkSize.writeUInt32LE(chunk.byteLength, 0); + return concat([ + new exports.Buffer(FourCC.substr(0, 4), "ascii"), + chunkSize, + chunk, + new exports.Buffer(chunk.byteLength % 2 === 0 ? 0 : 1) // padding + ]); +} +exports.createRIFFChunk = createRIFFChunk; +/* Original Metadata + + m 0 EBML + u 1 EBMLVersion 1 + u 1 EBMLReadVersion 1 + u 1 EBMLMaxIDLength 4 + u 1 EBMLMaxSizeLength 8 + s 1 DocType webm + u 1 DocTypeVersion 4 + u 1 DocTypeReadVersion 2 + m 0 Segment + m 1 Info segmentContentStartPos, all CueClusterPositions provided in info.cues will be relative to here and will need adjusted + u 2 TimecodeScale 1000000 + 8 2 MuxingApp Chrome + 8 2 WritingApp Chrome + m 1 Tracks tracksStartPos + m 2 TrackEntry + u 3 TrackNumber 1 + u 3 TrackUID 31790271978391090 + u 3 TrackType 2 + s 3 CodecID A_OPUS + b 3 CodecPrivate + m 3 Audio + f 4 SamplingFrequency 48000 + u 4 Channels 1 + m 2 TrackEntry + u 3 TrackNumber 2 + u 3 TrackUID 24051277436254136 + u 3 TrackType 1 + s 3 CodecID V_VP8 + m 3 Video + u 4 PixelWidth 1024 + u 4 PixelHeight 576 + m 1 Cluster clusterStartPos + u 2 Timecode 0 + b 2 SimpleBlock track:2 timecode:0 keyframe:true invisible:false discardable:false lacing:1 +*/ +/* Desired Metadata + + m 0 EBML + u 1 EBMLVersion 1 + u 1 EBMLReadVersion 1 + u 1 EBMLMaxIDLength 4 + u 1 EBMLMaxSizeLength 8 + s 1 DocType webm + u 1 DocTypeVersion 4 + u 1 DocTypeReadVersion 2 + m 0 Segment + m 1 SeekHead -> This is SeekPosition 0, so all SeekPositions can be calculated as (bytePos - segmentContentStartPos), which is 44 in this case + m 2 Seek + b 3 SeekID -> Buffer([0x15, 0x49, 0xA9, 0x66]) Info + u 3 SeekPosition -> infoStartPos = + m 2 Seek + b 3 SeekID -> Buffer([0x16, 0x54, 0xAE, 0x6B]) Tracks + u 3 SeekPosition { tracksStartPos } + m 2 Seek + b 3 SeekID -> Buffer([0x1C, 0x53, 0xBB, 0x6B]) Cues + u 3 SeekPosition { cuesStartPos } + m 1 Info + f 2 Duration 32480 -> overwrite, or insert if it doesn't exist + u 2 TimecodeScale 1000000 + 8 2 MuxingApp Chrome + 8 2 WritingApp Chrome + m 1 Tracks + m 2 TrackEntry + u 3 TrackNumber 1 + u 3 TrackUID 31790271978391090 + u 3 TrackType 2 + s 3 CodecID A_OPUS + b 3 CodecPrivate + m 3 Audio + f 4 SamplingFrequency 48000 + u 4 Channels 1 + m 2 TrackEntry + u 3 TrackNumber 2 + u 3 TrackUID 24051277436254136 + u 3 TrackType 1 + s 3 CodecID V_VP8 + m 3 Video + u 4 PixelWidth 1024 + u 4 PixelHeight 576 + m 1 Cues -> cuesStartPos + m 2 CuePoint + u 3 CueTime 0 + m 3 CueTrackPositions + u 4 CueTrack 1 + u 4 CueClusterPosition 3911 + m 2 CuePoint + u 3 CueTime 600 + m 3 CueTrackPositions + u 4 CueTrack 1 + u 4 CueClusterPosition 3911 + m 1 Cluster + u 2 Timecode 0 + b 2 SimpleBlock track:2 timecode:0 keyframe:true invisible:false discardable:false lacing:1 +*/ +/** + * convert the metadata from a streaming webm bytestream to a seekable file by inserting Duration, Seekhead and Cues + * @param originalMetadata - orginal metadata (everything before the clusters start) from media recorder + * @param duration - Duration (TimecodeScale) + * @param cues - cue points for clusters + */ +function makeMetadataSeekable(originalMetadata, duration, cuesInfo) { + // extract the header, we can reuse this as-is + var header = extractElement("EBML", originalMetadata); + var headerSize = encodedSizeOfEbml(header); + //console.error("Header size: " + headerSize); + //printElementIds(header); + // After the header comes the Segment open tag, which in this implementation is always 12 bytes (4 byte id, 8 byte 'unknown length') + // After that the segment content starts. All SeekPositions and CueClusterPosition must be relative to segmentContentStartPos + var segmentContentStartPos = headerSize + 12; + //console.error("segmentContentStartPos: " + segmentContentStartPos); + // find the original metadata size, and adjust it for header size and Segment start element so we can keep all positions relative to segmentContentStartPos + var originalMetadataSize = originalMetadata[originalMetadata.length - 1].dataEnd - segmentContentStartPos; + //console.error("Original Metadata size: " + originalMetadataSize); + //printElementIds(originalMetadata); + // extract the segment info, remove the potentially existing Duration element, and add our own one. + var info = extractElement("Info", originalMetadata); + removeElement("Duration", info); + info.splice(1, 0, { name: "Duration", type: "f", data: createFloatBuffer(duration, 8) }); + var infoSize = encodedSizeOfEbml(info); + //console.error("Info size: " + infoSize); + //printElementIds(info); + // extract the track info, we can re-use this as is + var tracks = extractElement("Tracks", originalMetadata); + var tracksSize = encodedSizeOfEbml(tracks); + //console.error("Tracks size: " + tracksSize); + //printElementIds(tracks); + var seekHeadSize = 47; // Initial best guess, but could be slightly larger if the Cues element is huge. + var seekHead = []; + var cuesSize = 5 + cuesInfo.length * 15; // very rough initial approximation, depends a lot on file size and number of CuePoints + var cues = []; + var lastSizeDifference = -1; // + // The size of SeekHead and Cues elements depends on how many bytes the offsets values can be encoded in. + // The actual offsets in CueClusterPosition depend on the final size of the SeekHead and Cues elements + // We need to iteratively converge to a stable solution. + var maxIterations = 10; + var _loop_1 = function (i) { + // SeekHead starts at 0 + var infoStart = seekHeadSize; // Info comes directly after SeekHead + var tracksStart = infoStart + infoSize; // Tracks comes directly after Info + var cuesStart = tracksStart + tracksSize; // Cues starts directly after + var newMetadataSize = cuesStart + cuesSize; // total size of metadata + // This is the offset all CueClusterPositions should be adjusted by due to the metadata size changing. + var sizeDifference = newMetadataSize - originalMetadataSize; + // console.error(`infoStart: ${infoStart}, infoSize: ${infoSize}`); + // console.error(`tracksStart: ${tracksStart}, tracksSize: ${tracksSize}`); + // console.error(`cuesStart: ${cuesStart}, cuesSize: ${cuesSize}`); + // console.error(`originalMetadataSize: ${originalMetadataSize}, newMetadataSize: ${newMetadataSize}, sizeDifference: ${sizeDifference}`); + // create the SeekHead element + seekHead = []; + seekHead.push({ name: "SeekHead", type: "m", isEnd: false }); + seekHead.push({ name: "Seek", type: "m", isEnd: false }); + seekHead.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x15, 0x49, 0xA9, 0x66]) }); // Info + seekHead.push({ name: "SeekPosition", type: "u", data: createUIntBuffer(infoStart) }); + seekHead.push({ name: "Seek", type: "m", isEnd: true }); + seekHead.push({ name: "Seek", type: "m", isEnd: false }); + seekHead.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x16, 0x54, 0xAE, 0x6B]) }); // Tracks + seekHead.push({ name: "SeekPosition", type: "u", data: createUIntBuffer(tracksStart) }); + seekHead.push({ name: "Seek", type: "m", isEnd: true }); + seekHead.push({ name: "Seek", type: "m", isEnd: false }); + seekHead.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x1C, 0x53, 0xBB, 0x6B]) }); // Cues + seekHead.push({ name: "SeekPosition", type: "u", data: createUIntBuffer(cuesStart) }); + seekHead.push({ name: "Seek", type: "m", isEnd: true }); + seekHead.push({ name: "SeekHead", type: "m", isEnd: true }); + seekHeadSize = encodedSizeOfEbml(seekHead); + //console.error("SeekHead size: " + seekHeadSize); + //printElementIds(seekHead); + // create the Cues element + cues = []; + cues.push({ name: "Cues", type: "m", isEnd: false }); + cuesInfo.forEach(function (_a) { + var CueTrack = _a.CueTrack, CueClusterPosition = _a.CueClusterPosition, CueTime = _a.CueTime; + cues.push({ name: "CuePoint", type: "m", isEnd: false }); + cues.push({ name: "CueTime", type: "u", data: createUIntBuffer(CueTime) }); + cues.push({ name: "CueTrackPositions", type: "m", isEnd: false }); + cues.push({ name: "CueTrack", type: "u", data: createUIntBuffer(CueTrack) }); + //console.error(`CueClusterPosition: ${CueClusterPosition}, Corrected to: ${CueClusterPosition - segmentContentStartPos} , offset by ${sizeDifference} to become ${(CueClusterPosition - segmentContentStartPos) + sizeDifference - segmentContentStartPos}`); + // EBMLReader returns CueClusterPosition with absolute byte offsets. The Cues section expects them as offsets from the first level 1 element of the Segment, so we need to adjust it. + CueClusterPosition -= segmentContentStartPos; + // We also need to adjust to take into account the change in metadata size from when EBMLReader read the original metadata. + CueClusterPosition += sizeDifference; + cues.push({ name: "CueClusterPosition", type: "u", data: createUIntBuffer(CueClusterPosition) }); + cues.push({ name: "CueTrackPositions", type: "m", isEnd: true }); + cues.push({ name: "CuePoint", type: "m", isEnd: true }); + }); + cues.push({ name: "Cues", type: "m", isEnd: true }); + cuesSize = encodedSizeOfEbml(cues); + //console.error("Cues size: " + cuesSize); + //console.error("Cue count: " + cuesInfo.length); + //printElementIds(cues); + // If the new MetadataSize is not the same as the previous iteration, we need to run once more. + if (lastSizeDifference !== sizeDifference) { + lastSizeDifference = sizeDifference; + if (i === maxIterations - 1) { + throw new Error("Failed to converge to a stable metadata size"); + } + } + else { + return "break"; + } + }; + for (var i = 0; i < maxIterations; i++) { + var state_1 = _loop_1(i); + if (state_1 === "break") + break; + } + var finalMetadata = [].concat.apply([], [ + header, + { name: "Segment", type: "m", isEnd: false, unknownSize: true }, + seekHead, + info, + tracks, + cues + ]); + var result = new EBMLEncoder_1.default().encode(finalMetadata); + //printElementIds(finalMetadata); + //console.error(`Final metadata buffer size: ${result.byteLength}`); + //console.error(`Final metadata buffer size without header and segment: ${result.byteLength-segmentContentStartPos}`); + return result; +} +exports.makeMetadataSeekable = makeMetadataSeekable; +/** + * print all element id names in a list + + * @param metadata - array of EBML elements to print + * +export function printElementIds(metadata: EBML.EBMLElementBuffer[]) { + + let result: EBML.EBMLElementBuffer[] = []; + let start: number = -1; + + for (let i = 0; i < metadata.length; i++) { + console.error("\t id: " + metadata[i].name); + } +} +*/ +/** + * remove all occurances of an EBML element from an array of elements + * If it's a MasterElement you will also remove the content. (everything between start and end) + * @param idName - name of the EBML Element to remove. + * @param metadata - array of EBML elements to search + */ +function removeElement(idName, metadata) { + var result = []; + var start = -1; + for (var i = 0; i < metadata.length; i++) { + var element = metadata[i]; + if (element.name === idName) { + // if it's a Master element, extract the start and end element, and everything in between + if (element.type === "m") { + if (!element.isEnd) { + start = i; + } + else { + // we've reached the end, extract the whole thing + if (start == -1) + throw new Error("Detected " + idName + " closing element before finding the start"); + metadata.splice(start, i - start + 1); + return; + } + } + else { + // not a Master element, so we've found what we're looking for. + metadata.splice(i, 1); + return; + } + } + } +} +exports.removeElement = removeElement; +/** + * extract the first occurance of an EBML tag from a flattened array of EBML data. + * If it's a MasterElement you will also get the content. (everything between start and end) + * @param idName - name of the EBML Element to extract. + * @param metadata - array of EBML elements to search + */ +function extractElement(idName, metadata) { + var result = []; + var start = -1; + for (var i = 0; i < metadata.length; i++) { + var element = metadata[i]; + if (element.name === idName) { + // if it's a Master element, extract the start and end element, and everything in between + if (element.type === "m") { + if (!element.isEnd) { + start = i; + } + else { + // we've reached the end, extract the whole thing + if (start == -1) + throw new Error("Detected " + idName + " closing element before finding the start"); + result = metadata.slice(start, i + 1); + break; + } + } + else { + // not a Master element, so we've found what we're looking for. + result.push(metadata[i]); + break; + } + } + } + return result; +} +exports.extractElement = extractElement; +/** + * @deprecated + * metadata に対して duration と seekhead を追加した metadata を返す + * @param metadata - 変更前の webm における ファイル先頭から 最初の Cluster 要素までの 要素 + * @param duration - Duration (TimecodeScale) + * @param cues - cue points for clusters + * @deprecated @param clusterPtrs - 変更前の webm における SeekHead に追加する Cluster 要素 への start pointer + * @deprecated @param cueInfos - please use cues. + */ +function putRefinedMetaData(metadata, info) { + if (Array.isArray(info.cueInfos) && !Array.isArray(info.cues)) { + console.warn("putRefinedMetaData: info.cueInfos property is deprecated. please use info.cues"); + info.cues = info.cueInfos; + } + var ebml = []; + var payload = []; + for (var i_1 = 0; i_1 < metadata.length; i_1++) { + var elm = metadata[i_1]; + if (elm.type === "m" && elm.name === "Segment") { + ebml = metadata.slice(0, i_1); + payload = metadata.slice(i_1); + if (elm.unknownSize) { + payload.shift(); // remove segment tag + break; + } + throw new Error("this metadata is not streaming webm file"); + } + } + // *0 *4 *5 *36 *40 *48=segmentOffset *185=originalPayloadOffsetEnd + // | | | | | | | + // [EBML][size]....[Segment][size][Info][size][Duration][size]...[Cluster] + // | | |^inf | | + // | +segmentSiz(12)+ | + // +-ebmlSize(36)--+ | +-payloadSize(137)-------------+offsetEndDiff+ + // | | +-newPayloadSize(??)-------------------------+ + // | | | | + // [Segment][size][Info][size][Duration][size]....[size][value][Cluster] + // ^ | + // | *??=newPayloadOffsetEnd + // inf + if (!(payload[payload.length - 1].dataEnd > 0)) { + throw new Error("metadata dataEnd has wrong number"); + } + var originalPayloadOffsetEnd = payload[payload.length - 1].dataEnd; // = first cluster ptr + var ebmlSize = ebml[ebml.length - 1].dataEnd; // = first segment ptr + var refinedEBMLSize = new EBMLEncoder_1.default().encode(ebml).byteLength; + var offsetDiff = refinedEBMLSize - ebmlSize; + var payloadSize = originalPayloadOffsetEnd - payload[0].tagStart; + var segmentSize = payload[0].tagStart - ebmlSize; + var segmentOffset = payload[0].tagStart; + var segmentTagBuf = new exports.Buffer([0x18, 0x53, 0x80, 0x67]); // Segment + var segmentSizeBuf = new exports.Buffer('01ffffffffffffff', 'hex'); // Segmentの最後の位置は無数の Cluster 依存なので。 writeVint(newPayloadSize).byteLength ではなく、 infinity. + var _segmentSize = segmentTagBuf.byteLength + segmentSizeBuf.byteLength; // == segmentSize + var newPayloadSize = payloadSize; + // We need the size to be stable between two refinements in order for our offsets to be correct + // Bound the number of possible refinements so we can't go infinate if something goes wrong + var i; + for (i = 1; i < 20; i++) { + var newPayloadOffsetEnd = ebmlSize + _segmentSize + newPayloadSize; + var offsetEndDiff = newPayloadOffsetEnd - originalPayloadOffsetEnd; + var sizeDiff = offsetDiff + offsetEndDiff; + var refined = refineMetadata(payload, sizeDiff, info); + var newNewRefinedSize = new EBMLEncoder_1.default().encode(refined).byteLength; // 一旦 seekhead を作って自身のサイズを調べる + if (newNewRefinedSize === newPayloadSize) { + // Size is stable + return new EBMLEncoder_1.default().encode([].concat(ebml, [{ type: "m", name: "Segment", isEnd: false, unknownSize: true }], refined)); + } + newPayloadSize = newNewRefinedSize; + } + throw new Error("unable to refine metadata, stable size could not be found in " + i + " iterations!"); +} +exports.putRefinedMetaData = putRefinedMetaData; +// Given a list of EBMLElementBuffers, returns their encoded size in bytes +function encodedSizeOfEbml(refinedMetaData) { + var encorder = new EBMLEncoder_1.default(); + return refinedMetaData.reduce(function (lst, elm) { return lst.concat(encorder.encode([elm])); }, []).reduce(function (o, buf) { return o + buf.byteLength; }, 0); +} +function refineMetadata(mesetadata, sizeDiff, info) { + var duration = info.duration, clusterPtrs = info.clusterPtrs, cues = info.cues; + var _metadata = mesetadata.slice(0); + if (typeof duration === "number") { + // duration を追加する + var overwrited_1 = false; + _metadata.forEach(function (elm) { + if (elm.type === "f" && elm.name === "Duration") { + overwrited_1 = true; + elm.data = createFloatBuffer(duration, 8); + } + }); + if (!overwrited_1) { + insertTag(_metadata, "Info", [{ name: "Duration", type: "f", data: createFloatBuffer(duration, 8) }]); + } + } + if (Array.isArray(cues)) { + insertTag(_metadata, "Cues", create_cue(cues, sizeDiff)); + } + var seekhead_children = []; + if (Array.isArray(clusterPtrs)) { + console.warn("append cluster pointers to seekhead is deprecated. please use cues"); + seekhead_children = create_seek_from_clusters(clusterPtrs, sizeDiff); + } + // remove seek info + /* + _metadata = _metadata.filter((elm)=> !( + elm.name === "Seek" || + elm.name === "SeekID" || + elm.name === "SeekPosition") ); + */ + // working on progress + //seekhead_children = seekhead_children.concat(create_seekhead(_metadata)); + insertTag(_metadata, "SeekHead", seekhead_children, true); + return _metadata; +} +function create_seekhead(metadata, sizeDiff) { + var seeks = []; + ["Info", "Tracks", "Cues"].forEach(function (tagName) { + var tagStarts = metadata.filter(function (elm) { return elm.type === "m" && elm.name === tagName && elm.isEnd === false; }).map(function (elm) { return elm["tagStart"]; }); + var tagStart = tagStarts[0]; + if (typeof tagStart !== "number") { + return; + } + seeks.push({ name: "Seek", type: "m", isEnd: false }); + switch (tagName) { + case "Info": + seeks.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x15, 0x49, 0xA9, 0x66]) }); + break; + case "Tracks": + seeks.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x16, 0x54, 0xAE, 0x6B]) }); + break; + case "Cues": + seeks.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x1C, 0x53, 0xBB, 0x6B]) }); + break; + } + seeks.push({ name: "SeekPosition", type: "u", data: createUIntBuffer(tagStart + sizeDiff) }); + seeks.push({ name: "Seek", type: "m", isEnd: true }); + }); + return seeks; +} +function create_seek_from_clusters(clusterPtrs, sizeDiff) { + var seeks = []; + clusterPtrs.forEach(function (start) { + seeks.push({ name: "Seek", type: "m", isEnd: false }); + // [0x1F, 0x43, 0xB6, 0x75] で Cluster 意 + seeks.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x1F, 0x43, 0xB6, 0x75]) }); + seeks.push({ name: "SeekPosition", type: "u", data: createUIntBuffer(start + sizeDiff) }); + seeks.push({ name: "Seek", type: "m", isEnd: true }); + }); + return seeks; +} +function create_cue(cueInfos, sizeDiff) { + var cues = []; + cueInfos.forEach(function (_a) { + var CueTrack = _a.CueTrack, CueClusterPosition = _a.CueClusterPosition, CueTime = _a.CueTime; + cues.push({ name: "CuePoint", type: "m", isEnd: false }); + cues.push({ name: "CueTime", type: "u", data: createUIntBuffer(CueTime) }); + cues.push({ name: "CueTrackPositions", type: "m", isEnd: false }); + cues.push({ name: "CueTrack", type: "u", data: createUIntBuffer(CueTrack) }); // video track + cues.push({ name: "CueClusterPosition", type: "u", data: createUIntBuffer(CueClusterPosition + sizeDiff) }); + cues.push({ name: "CueTrackPositions", type: "m", isEnd: true }); + cues.push({ name: "CuePoint", type: "m", isEnd: true }); + }); + return cues; +} +function insertTag(_metadata, tagName, children, insertHead) { + if (insertHead === void 0) { insertHead = false; } + // find the tagname from _metadata + var idx = -1; + for (var i = 0; i < _metadata.length; i++) { + var elm = _metadata[i]; + if (elm.type === "m" && elm.name === tagName && elm.isEnd === false) { + idx = i; + break; + } + } + if (idx >= 0) { + // insert [] to + Array.prototype.splice.apply(_metadata, [idx + 1, 0].concat(children)); + } + else if (insertHead) { + [].concat([{ name: tagName, type: "m", isEnd: false }], children, [{ name: tagName, type: "m", isEnd: true }]).reverse().forEach(function (elm) { _metadata.unshift(elm); }); + } + else { + // metadata 末尾に を追加 + // insert + _metadata.push({ name: tagName, type: "m", isEnd: false }); + children.forEach(function (elm) { _metadata.push(elm); }); + _metadata.push({ name: tagName, type: "m", isEnd: true }); + } +} +// alter Buffer.concat - https://github.com/feross/buffer/issues/154 +function concat(list) { + //return Buffer.concat.apply(Buffer, list); + var i = 0; + var length = 0; + for (; i < list.length; ++i) { + length += list[i].length; + } + var buffer = exports.Buffer.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer; +} +exports.concat = concat; +function encodeValueToBuffer(elm) { + var data = new exports.Buffer(0); + if (elm.type === "m") { + return elm; + } + switch (elm.type) { + case "u": + data = createUIntBuffer(elm.value); + break; + case "i": + data = createIntBuffer(elm.value); + break; + case "f": + data = createFloatBuffer(elm.value); + break; + case "s": + data = new exports.Buffer(elm.value, 'ascii'); + break; + case "8": + data = new exports.Buffer(elm.value, 'utf8'); + break; + case "b": + data = elm.value; + break; + case "d": + data = new int64_buffer_1.Int64BE(elm.value.getTime().toString()).toBuffer(); + break; + } + return Object.assign({}, elm, { data: data }); +} +exports.encodeValueToBuffer = encodeValueToBuffer; +function createUIntBuffer(value) { + // Big-endian, any size from 1 to 8 + // but js number is float64, so max 6 bit octets + var bytes = 1; + for (; value >= Math.pow(2, 8 * bytes); bytes++) { } + if (bytes >= 7) { + console.warn("7bit or more bigger uint not supported."); + return new int64_buffer_1.Uint64BE(value).toBuffer(); + } + var data = new exports.Buffer(bytes); + data.writeUIntBE(value, 0, bytes); + return data; +} +exports.createUIntBuffer = createUIntBuffer; +function createIntBuffer(value) { + // Big-endian, any size from 1 to 8 octets + // but js number is float64, so max 6 bit + var bytes = 1; + for (; value >= Math.pow(2, 8 * bytes); bytes++) { } + if (bytes >= 7) { + console.warn("7bit or more bigger uint not supported."); + return new int64_buffer_1.Int64BE(value).toBuffer(); + } + var data = new exports.Buffer(bytes); + data.writeIntBE(value, 0, bytes); + return data; +} +exports.createIntBuffer = createIntBuffer; +function createFloatBuffer(value, bytes) { + if (bytes === void 0) { bytes = 8; } + // Big-endian, defined for 4 and 8 octets (32, 64 bits) + // js number is float64 so 8 bytes. + if (bytes === 8) { + // 64bit + var data = new exports.Buffer(8); + data.writeDoubleBE(value, 0); + return data; + } + else if (bytes === 4) { + // 32bit + var data = new exports.Buffer(4); + data.writeFloatBE(value, 0); + return data; + } + else { + throw new Error("float type bits must 4bytes or 8bytes"); + } +} +exports.createFloatBuffer = createFloatBuffer; +function convertEBMLDateToJSDate(int64str) { + if (int64str instanceof Date) { + return int64str; + } + return new Date(new Date("2001-01-01T00:00:00.000Z").getTime() + (Number(int64str) / 1000 / 1000)); +} +exports.convertEBMLDateToJSDate = convertEBMLDateToJSDate; + + +/***/ }), + +/***/ "./node_modules/ts-ebml/node_modules/events/events.js": +/*!************************************************************!*\ + !*** ./node_modules/ts-ebml/node_modules/events/events.js ***! + \************************************************************/ +/***/ ((module) => { + +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; + } + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + args = Array.prototype.slice.call(arguments, 1); + handler.apply(this, args); + } + } else if (isObject(handler)) { + args = Array.prototype.slice.call(arguments, 1); + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.prototype.listenerCount = function(type) { + if (this._events) { + var evlistener = this._events[type]; + + if (isFunction(evlistener)) + return 1; + else if (evlistener) + return evlistener.length; + } + return 0; +}; + +EventEmitter.listenerCount = function(emitter, type) { + return emitter.listenerCount(type); +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + + /***/ }), /***/ "react": @@ -16888,6 +23752,7 @@ __webpack_require__.r(__webpack_exports__); \************************/ /***/ ((module) => { +"use strict"; module.exports = React; /***/ }), @@ -16898,6 +23763,7 @@ module.exports = React; \***************************/ /***/ ((module) => { +"use strict"; module.exports = ReactDOM; /***/ }), @@ -16908,6 +23774,7 @@ module.exports = ReactDOM; \****************************/ /***/ ((module) => { +"use strict"; module.exports = ReactIntl; /***/ }), @@ -16918,6 +23785,7 @@ module.exports = ReactIntl; \*************************/ /***/ ((module) => { +"use strict"; module.exports = Tinode; /***/ }), @@ -16928,6 +23796,7 @@ module.exports = Tinode; \**************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "FirebaseError": () => (/* reexport safe */ _firebase_util__WEBPACK_IMPORTED_MODULE_2__.FirebaseError), @@ -17898,6 +24767,7 @@ registerCoreComponents(''); \********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Component": () => (/* binding */ Component), @@ -18324,6 +25194,7 @@ class ComponentContainer { \************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "deleteInstallations": () => (/* binding */ deleteInstallations), @@ -19500,6 +26371,7 @@ registerInstallations(); \*****************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "LogLevel": () => (/* binding */ LogLevel), @@ -19736,6 +26608,7 @@ function setUserLogHandler(logCallback, options) { \********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "deleteToken": () => (/* binding */ deleteToken), @@ -20997,6 +27870,7 @@ registerMessagingInWindow(); \*****************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "deleteDB": () => (/* binding */ deleteDB), @@ -21103,6 +27977,7 @@ function getMethod(target, prop) { \**************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "a": () => (/* binding */ reverseTransformCache), @@ -21298,6 +28173,17 @@ const unwrap = (value) => reverseTransformCache.get(value); +/***/ }), + +/***/ "./node_modules/ts-ebml/package.json": +/*!*******************************************!*\ + !*** ./node_modules/ts-ebml/package.json ***! + \*******************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('{"name":"ts-ebml","version":"2.0.2","description":"ebml decoder and encoder","scripts":{"setup":"npm install -g http-server;","init":"npm run update; npm run mkdir; npm run build","update":"npm run reset; npm update","reset":"rm -rf node_modules","mkdir":"mkdir lib dist 2>/dev/null","clean":"rm -rf lib/* dist/* test/*.js; mkdir -p dist","build":"npm run clean && tsc -p .; npm run browserify","start":"http-server . -s & tsc -w -p .& watchify lib/example_seekable.js -o test/example_seekable.js","stop":"killall -- node */tsc -w -p","browserify":"browserify lib/index.js --standalone EBML -o dist/EBML.js","watchify":"watchify lib/index.js --standalone EBML -o dist/EBMl.js -v","test":"tsc; espower lib/test.js > lib/test.tmp; mv -f lib/test.tmp lib/test.js; browserify lib/test.js -o test/test.js","example":"tsc; browserify lib/example_seekable.js -o test/example_seekable.js","examples":"tsc; for file in `find lib -name \'example_*.js\' -type f -printf \'%f\\\\n\'`; do browserify lib/$file -o test/$file; done","examples_bsd":"tsc; for file in `find lib -name \'example_*.js\' -type f -print`; do browserify lib/$(basename $file) -o test/$(basename $file); done","check":"tsc -w --noEmit -p ./","lint":"tslint -c ./tslint.json --project ./tsconfig.json --type-check","doc":"typedoc --mode modules --out doc --disableOutputCheck"},"repository":{"type":"git","url":"git+https://github.com/legokichi/ts-ebml.git"},"keywords":["ebml","webm","mkv","matrosika","webp"],"author":"legokichi duckscallion","license":"MIT","bugs":{"url":"https://github.com/legokichi/ts-ebml/issues"},"homepage":"https://github.com/legokichi/ts-ebml#readme","dependencies":{"buffer":"^5.0.7","commander":"^2.11.0","ebml":"^2.2.1","ebml-block":"^1.1.0","events":"^1.1.1","int64-buffer":"^0.1.9","matroska":"^2.2.3"},"devDependencies":{"@types/commander":"^2.9.1","@types/qunit":"^2.0.31","browserify":"^13.1.0","empower":"^1.2.3","espower-cli":"^1.1.0","power-assert":"^1.4.4","power-assert-formatter":"^1.4.1","qunit-tap":"^1.5.1","qunitjs":"^2.4.0","tslint":"^3.15.1","typedoc":"^0.5.3","typescript":"^2.4.2","watchify":"^3.7.0"},"bin":"./lib/cli.js","main":"./lib/index.js","typings":"./lib/index.d.ts"}'); + /***/ }), /***/ "./src/messages.json": @@ -21306,6 +28192,7 @@ const unwrap = (value) => reverseTransformCache.get(value); \***************************/ /***/ ((module) => { +"use strict"; module.exports = JSON.parse('{"de":{"action_block_contact":"Kontakt blockieren","action_cancel":"Abbrechen","action_clear_messages":"Nachrichten leeren","action_delete_messages":"Nachrichten für alle löschen","action_leave_chat":"Unterhaltung verlassen","action_report_chat":"Unterhaltung melden","archived_contacts":"Archivierte Kontakte ({count})","badge_danger":"Verdächtig","badge_owner":"Besitzer","badge_staff":"Verwaltung","badge_verified":"Verifiziert","badge_you":"Sie","block_contact_warning":"Möchten Sie diesen Kontakt wirklich blockieren?","blocked_contacts_link":"Blockierte Kontakte ({count})","button_add_another":"Hinzufügen","button_add_members":"Mitglieder hinzufügen","button_cancel":"Abbrechen","button_confirm":"Bestätigen","button_create":"Erstellen","button_delete_account":"Konto löschen","button_edit":"Bearbeiten","button_logout":"Abmelden","button_ok":"OK","button_reset":"Zurücksetzen","button_send_request":"Anfrage senden","button_sign_in":"Anmelden","button_sign_up":"Anmelden","button_subscribe":"Abbonieren","button_update":"Aktualisieren","cannot_initiate_file_upload":"Datei kann nicht hochgeladen werden.","channel":"Sender","channel_prompt":"Dies ist ein Sender","chat_invitation":"Sie sind eingeladen, an einem neuen Chat teilzunehmen. Was möchten Sie tun?","chat_invitation_accept":"Akzeptieren","chat_invitation_block":"Blockieren","chat_invitation_ignore":"Ignorieren","clear_messages_warning":"Sind Sie sicher, dass Sie diese Unterhaltung für alle leeren wollen? Das kann nicht rückgängig gemacht werden.","code_doesnot_match":"Code stimmt nicht überein","contacts_not_found":"Sie haben keine Unterhaltungen
¯∖_(ツ)_/¯","contacts_not_found_short":"Keine Kontakte für \'\'{query}\'\'","credential_email_prompt":"E-Mail Adresse für Registrierung","delete_account":"Konto löschen","delete_account_warning":"Möchten Sie das Konto wirklich löschen? Das kann nicht rückgängig gemacht werden","delete_messages_warning":"Sind Sie sicher, dass Sie diese Unterhaltung für alle löschen wollen? Das kann nicht rückgängig gemacht werden.","deleted_content":"Inhalt gelöscht","download_action":"herunterladen","drafty_attachment":"Dateianhang","drafty_form":"Formular:","drafty_image":"Bild","email_dative":"E-Mail","email_prompt":"E-Mail, z.B. lisam@beispiel.de","enable_peers_messaging":"Aktivieren","enter_confirmation_code_prompt":"Geben Sie den Bestätigungscode ein, der per {method} geschickt wurde:","error_invalid_id":"ungültige ID","file_attachment_too_large":"Die Dateigröße {size} überschreitet das Limit von {limit}.","forgot_password_link":"Passwort vergessen?","full_name_prompt":"Vollständiger Name, z.B. Lisa Musterfrau","granted_permissions":"Erteilt","group_has_no_members":"Keine Mitglieder","group_user_id_prompt":"Gruppe oder Benutzer ID","image_caption_prompt":"Bildunterschrift","invalid_content":"ungültiger Inhalt","invalid_security_token":"Ungültiger Sicherheitsschlüssel","label_client":"Client:","label_content_type":"Inhaltsart:","label_default_access_mode":"Standard Zugriffsmodus:","label_file_name":"Dateiname:","label_group_members":"Gruppenmitglieder:","label_incognito_mode":"inkognito-Modus:","label_message_sound":"Benachrichtigungston:","label_muting_topic":"Stumm geschaltet:","label_other_user":"Andere","label_password":"Passwort","label_permissions":"Berechtigungen:","label_private":"Privater Kommentar","label_push_notifications":"Benachrichtigungsmeldungen:","label_push_notifications_disabled":"Benachrichtigungsmeldungen (erfordert HTTPS):","label_reset_password":"Passwort per E-Mail wiederherstellen:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server Adresse:","label_server_to_use":"Server verwenden:","label_size":"Größe:","label_topic_name":"Name","label_user_contacts":"Kontakte:","label_user_id":"ID:","label_wire_transport":"Übertragung per Kabel:","label_you":"Sie:","label_your_name":"Ihr Name","label_your_permissions":"Ihre Berechtigungen:","last_seen_timestamp":"Zuletzt gesehen","leave_chat_warning":"Möchten Sie diese Unterhaltung wirklich verlassen?","link_contact_us":"Kontakt","link_privacy_policy":"Datenschutzerklärung","link_terms_of_service":"Nutzungsbedingungen","login_prompt":"Anmelden","menu_item_archive_topic":"Archivieren","menu_item_block":"Blockieren","menu_item_clear_messages":"Nachrichten leeren","menu_item_clear_messages_for_all":"Für alle leeren","menu_item_delete":"Löschen","menu_item_delete_for_all":"Für alle löschen","menu_item_delete_topic":"Entfernen","menu_item_edit_permissions":"Berechtigungen ändern","menu_item_info":"Info","menu_item_member_delete":"Entfernen","menu_item_mute":"Unterhaltung stumm schalten","menu_item_restore_topic":"Wiederherstellen","menu_item_send_retry":"Wiederholen","menu_item_unblock":"Blockierung aufheben","menu_item_unmute":"Stumm schalten beenden","message_sending":"wird gesendet...","message_sending_failed":"fehlgeschlagen","messages_not_readable":"Neue Nachrichten können nicht gelesen werden","messaging_disabled_prompt":"Nachrichtenübermittlung deaktiviert","more_online_members":"+{overflow} mehr","new_message_prompt":"Neue Nachricht","new_password_placeholder":"Geben Sie ein neues Passwort ein","no_connection":"Keine Verbindung","no_contacts":"Sie haben keine Kontakte :-(","numeric_confirmation_code_prompt":"Nur zahlen","online_now":"jetzt online","password_prompt":"Passwort","password_unchanged_prompt":"unverändert","peers_messaging_disabled":"Gruppennachrichten sind deaktiviert","permission_admin":"Bestätigen ({val})","permission_delete":"Entfernen ({val})","permission_join":"Beitreten ({val})","permission_owner":"Besitzer ({val})","permission_pres":"Benachrichtigt werden ({val})","permission_read":"Lesen ({val})","permission_share":"Teilen ({val})","permission_write":"Schreiben ({val})","phone_dative":"Telefon","private_editing_placeholder":"Nur für Sie sichtbar","push_init_failed":"Initialisierung von Push-Benachrichtigungen fehlgeschlagen","reconnect_countdown":"Getrennt. Wiederverbinden in {seconds}…","reconnect_now":"Jetzt probieren","reload_update":"Neu laden","report_chat_warning":"Möchten Sie diese Unterhaltung wirklich blockieren und melden?","requested_permissions":"Angefordert","save_attachment":"Speichern","search_for_contacts":"Nutzen Sie die Suche um Kontakte zu finden","search_no_results":"Die Suche hatte keine Ergebnisse","search_placeholder":"Liste: email:lisa@beispiel.de, tel:17025550003...","sidepanel_title_acc_notifications":"Benachrichtigungen","sidepanel_title_acc_support":"Unterstützung","sidepanel_title_account_settings":"Konto-Einstellungen","sidepanel_title_archive":"Archivierte Unterhaltungen","sidepanel_title_blocked":"Blockierte Unterhaltungen","sidepanel_title_cred":"Anmeldeinformationen bestätigen","sidepanel_title_login":"Anmelden","sidepanel_title_newtpk":"Neue Unterhaltung starten","sidepanel_title_register":"Konto erstellen","sidepanel_title_reset":"Passwort zurücksetzen","sidepanel_title_settings":"Einstellungen","stay_logged_in":"Angemeldet bleiben","tabtitle_find_user":"Suchen","tabtitle_group_by_id":"nach ID","tabtitle_new_group":"Neue Gruppe","tags_editor_no_tags":"Schlagworte hinzufügen","tags_not_found":"Keine Schlagworte definiert. Erstellen Sie welche.","title_all_contacts":"Alle Kontakte","title_group_members":"Gruppenmitglieder","panel_title_info":"Info","title_manage_tags":"Verwalten","title_not_found":"Nicht gefunden","title_permissions":"Berechtigungen","title_tag_manager":"Schlagworte (Nutzer entdecken)","topic_block_warning":"Möchten Sie diese Unterhaltung wirklich blockieren?","topic_delete_warning":"Möchten Sie diese Unterhaltung wirklich löschen?","topic_name_editing_placeholder":"Freiform Name der Gruppe","unnamed_topic":"Unbenannt","update_available":"Aktualisierung verfügbar.","upload_finishing":"wird abgeschlossen...","user_not_found":"Nicht gefunden","validate_credential_action":"bestätigen","description_editing_placeholder":"Beschreibung (optional)","label_description":"Beschreibung","button_security":"Sicherheit","panel_title_general":"Allgemein","panel_title_security":"Sicherheit","panel_title_crop":"Zum Anpassen ziehen","panel_title_members":"Mitglieder","permissions_anonymous":"Anonym","permissions_authenticated":"Authentifiziert","topic_delete":"Chat löschen","permissions_user":"Benutzerberechtigungen","password_reset_email_sent":"Eine E-Mail wurde an {email} gesendet. Folgen Sie den Anweisungen in der E-Mail, um Ihr Passwort zurückzusetzen.","label_unarchive_topic":"Archiviert:","menu_item_reply":"Antwort","menu_item_forward":"Nach vorne","forward_to":"Weiterleiten","forward_to_search_placeholder":"Kontakte durchsuchen","label_new_password":"Neues Kennwort","drafty_unknown":"Nicht unterstützt","calls_incoming":"Eingehender Anruf","calls_outgoing":"Ausgehender Anruf","calls_you_label":"Du","menu_item_video_call":"Videoanruf","already_in_call":"Du redest schon!","call_cancelled":"abgebrochen","call_missed":"verpasster","call_declined":"abgelehnt","call_disconnected":"getrennt","label_use_secure_connection":"Verwenden Sie eine sichere Verbindung","phone_or_email_prompt":"Telefonnummer oder E-Mail","cred_confirmed_successfully":"Erfolgreich bestätigt"},"en":{"action_block_contact":"Block Contact","action_cancel":"cancel","action_clear_messages":"Clear Messages","action_delete_messages":"Clear Messages for All","action_leave_chat":"Leave Conversation","action_report_chat":"Report Conversation","archived_contacts":"Archived contacts ({count})","badge_danger":"Untrustworthy","badge_owner":"owner","badge_staff":"Staff-managed","badge_verified":"Verified/official","badge_you":"you","block_contact_warning":"Are you sure you want to block this contact?","blocked_contacts_link":"Blocked contacts ({count})","button_add_another":"Add another","button_add_members":"Add members","button_cancel":"Cancel","button_confirm":"Confirm","button_create":"Create","button_delete_account":"Delete account","button_edit":"Edit","button_logout":"Logout","button_ok":"OK","button_reset":"Reset","button_send_request":"Send request","button_sign_in":"Sign in","button_sign_up":"Sign up","button_subscribe":"Subscribe","button_update":"Update","cannot_initiate_file_upload":"Cannot initiate file upload.","channel":"channel","channel_prompt":"This is a channel","chat_invitation":"You are invited to start a new chat. What would you like to do?","chat_invitation_accept":"Accept","chat_invitation_block":"Block","chat_invitation_ignore":"Ignore","clear_messages_warning":"Are you sure you want to clear all messages? It cannot be undone.","code_doesnot_match":"Code does not match","contacts_not_found":"You have no chats
¯∖_(ツ)_/¯","contacts_not_found_short":"No contacts match \'\'{query}\'\'","credential_email_prompt":"Your registration email","delete_account":"Delete account","delete_account_warning":"Are you sure you want to delete your account? It cannot be undone.","delete_messages_warning":"Are you sure you want to delete all messages for everyone? It cannot be undone.","deleted_content":"content deleted","download_action":"download","drafty_attachment":"Attachment","drafty_form":"Form:","drafty_image":"Picture","email_dative":"email","email_prompt":"Email, e.g. jdoe@example.com","enable_peers_messaging":"Enable","enter_confirmation_code_prompt":"Enter confirmation code sent to you by {method}:","error_invalid_id":"Invalid ID","file_attachment_too_large":"The file size {size} exceeds the {limit} limit.","forgot_password_link":"Forgot password?","full_name_prompt":"Full name, e.g. John Doe","granted_permissions":"Granted","group_has_no_members":"No members","group_user_id_prompt":"Group or User ID","image_caption_prompt":"Image caption","invalid_content":"invalid content","invalid_security_token":"Invalid security token","label_client":"Client:","label_content_type":"Content type:","label_default_access_mode":"Default access mode:","label_file_name":"File name:","label_group_members":"Group members:","label_incognito_mode":"Incognito mode:","label_message_sound":"Message sound:","label_muting_topic":"Muted:","label_other_user":"Other","label_password":"Password","label_permissions":"Permissions:","label_private":"Private comment","label_push_notifications":"Notification alerts:","label_push_notifications_disabled":"Notification alerts (requires HTTPS):","label_reset_password":"Send a password reset email:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server address:","label_server_to_use":"Server to use:","label_size":"Size:","label_topic_name":"Name","label_user_contacts":"Contacts:","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"You:","label_your_name":"Your name","label_your_permissions":"Your permissions:","last_seen_timestamp":"Last seen","leave_chat_warning":"Are you sure you want to leave this conversation?","link_contact_us":"Contact Us","link_privacy_policy":"Privacy Policy","link_terms_of_service":"Terms of Service","login_prompt":"Login","menu_item_archive_topic":"Archive","menu_item_block":"Block","menu_item_clear_messages":"Clear messages","menu_item_clear_messages_for_all":"Clear for All","menu_item_delete":"Delete","menu_item_delete_for_all":"Delete for All","menu_item_delete_topic":"Delete","menu_item_edit_permissions":"Edit permissions","menu_item_info":"Info","menu_item_member_delete":"Remove","menu_item_mute":"Mute","menu_item_reply":"Reply","menu_item_restore_topic":"Restore","menu_item_send_retry":"Retry","menu_item_unblock":"Unblock","menu_item_unmute":"Unmute","message_sending":"sending...","message_sending_failed":"failed","messages_not_readable":"no access to messages","messaging_disabled_prompt":"Messaging disabled","more_online_members":"+{overflow} more","new_message_prompt":"New message","new_password_placeholder":"Enter new password","no_connection":"No connection","no_contacts":"You have no contacts :-(","numeric_confirmation_code_prompt":"Numbers only","online_now":"online now","password_prompt":"Password","password_unchanged_prompt":"Unchanged","peers_messaging_disabled":"Peer\'s messaging is disabled.","permission_admin":"Approve ({val})","permission_delete":"Delete ({val})","permission_join":"Join ({val})","permission_owner":"Owner ({val})","permission_pres":"Get notified ({val})","permission_read":"Read ({val})","permission_share":"Share ({val})","permission_write":"Write ({val})","phone_dative":"phone","private_editing_placeholder":"Visible to you only","push_init_failed":"Failed to initialize push notifications","reconnect_countdown":"Disconnected. Reconnecting in {seconds}…","reconnect_now":"Try now","reload_update":"Reload","report_chat_warning":"Are you sure you want to block and report this conversation?","requested_permissions":"Requested","save_attachment":"save","search_for_contacts":"Use search to find contacts","search_no_results":"Search returned no results","search_placeholder":"List like email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notifications","sidepanel_title_acc_support":"Support","sidepanel_title_account_settings":"Account Settings","sidepanel_title_archive":"Archived Chats","sidepanel_title_blocked":"Blocked Chats","sidepanel_title_cred":"Confirm Credentials","sidepanel_title_login":"Sign In","sidepanel_title_newtpk":"Start New Chat","sidepanel_title_register":"Create Account","sidepanel_title_reset":"Reset Password","sidepanel_title_settings":"Settings","stay_logged_in":"Stay logged in","tabtitle_find_user":"find","tabtitle_group_by_id":"by id","tabtitle_new_group":"new group","tags_editor_no_tags":"Add some tags","tags_not_found":"No tags defined. Add some.","title_all_contacts":"All Contacts","title_group_members":"Group Members","title_manage_tags":"Manage","title_not_found":"Not found","title_permissions":"Permissions","title_tag_manager":"Tags (search & discovery)","topic_block_warning":"Are you sure you want to block this conversation?","topic_delete_warning":"Are you sure you want to delete this conversation?","topic_name_editing_placeholder":"Freeform name of the group","unnamed_topic":"Unnamed","update_available":"Update available.","upload_finishing":"finishing...","user_not_found":"Not found","validate_credential_action":"confirm","description_editing_placeholder":"Optional description","label_description":"Description","button_security":"Security","panel_title_crop":"Drag to Adjust","panel_title_general":"General","panel_title_members":"Members","panel_title_security":"Security","panel_title_info":"Info","permissions_anonymous":"Anonymous","permissions_authenticated":"Authenticated","topic_delete":"Delete Conversation","permissions_user":"User\'s Permissions","password_reset_email_sent":"An email has been sent to {email}. Follow the directions in the email to reset your password.","label_unarchive_topic":"Archived:","menu_item_forward":"Forward","forward_to":"Forward to","forward_to_search_placeholder":"Search contacts","label_new_password":"New password","drafty_unknown":"Unsupported","calls_incoming":"Incoming call","calls_outgoing":"Outgoing call","calls_you_label":"You","menu_item_video_call":"Video call","already_in_call":"You already in an ongoing call!","call_cancelled":"cancelled","call_missed":"missed","call_declined":"declined","call_disconnected":"disconnected","label_use_secure_connection":"Use secure connection","phone_or_email_prompt":"Phone number or email","cred_confirmed_successfully":"Confirmed successfully"},"es":{"action_block_contact":"Bloquear contacto","action_cancel":"cancelar","action_clear_messages":"Borrar mensajes","action_delete_messages":"Borrar mensajes para todos","action_leave_chat":"Dejar conversación","action_report_chat":"Reportar conversación","archived_contacts":"Contactos archivados ({count})","badge_danger":"Suspicaz","badge_owner":"propietario","badge_staff":"Administración","badge_verified":"Verificado","badge_you":"tú","block_contact_warning":"¿Estás seguro de que quieres bloquear a este contacto?","blocked_contacts_link":"Contactos bloqueados ({count})","button_add_another":"Añadir contacto","button_add_members":"Añadir miembros","button_cancel":"Cancelar","button_confirm":"Confirmar","button_create":"Crear","button_delete_account":"Eliminar cuenta","button_edit":"Editar","button_logout":"Cerrar sesión","button_ok":"OK","button_reset":"Restablecer","button_send_request":"Enviar petición","button_sign_in":"Entrar","button_sign_up":"Regístrate","button_subscribe":"Suscribirse","button_update":"Actualizar","cannot_initiate_file_upload":"No se pudo iniciar la carga del archivo.","channel":"canal","channel_prompt":"Este es un canal","chat_invitation":"Estás invitado a participar en un nuevo chat. ¿Qué te gustaría hacer?","chat_invitation_accept":"Aceptar","chat_invitation_block":"Bloquear","chat_invitation_ignore":"Ignorar","clear_messages_warning":"¿Estás seguro de que quieres eliminar todos los mensajes? Esta acción es irreversible.","code_doesnot_match":"El código no coincide","contacts_not_found":"No tienes chats
¯∖_(ツ)_/¯","contacts_not_found_short":"Ningún contacto coincide con \'\'{query}\'\'","credential_email_prompt":"Tu correo electrónico de registro","delete_account":"Eliminar cuenta","delete_account_warning":"¿Estás seguro de que deseas eliminar permanentemente tu cuenta? Esta acción es irreversible.","delete_messages_warning":"¿Estás seguro de que quieres eliminar todos los mensajes para todos? Esta acción es irreversible.","deleted_content":"este mensaje fue eliminado","download_action":"descargar","drafty_attachment":"Archivo","drafty_form":"Formulario:","drafty_image":"Imagen","email_dative":"correo electrónico","email_prompt":"Correo electrónico, p.ej. juan@example.com","enable_peers_messaging":"Habilitar","enter_confirmation_code_prompt":"Introduzca el código de confirmación enviado a tu {method}:","error_invalid_id":"ID inválido","file_attachment_too_large":"El tamaño del archivo {size} excede el límite de {limit}.","forgot_password_link":"¿Olvidaste tu contraseña?","full_name_prompt":"Nombre completo, p.ej. Juan González Hernández","granted_permissions":"Otorgados","group_has_no_members":"No hay miembros","group_user_id_prompt":"ID del grupo o usuario","image_caption_prompt":"Añade un comentario","invalid_content":"contenido inválido","invalid_security_token":"Token de seguridad inválido","label_client":"Cliente:","label_content_type":"Tipo de contenido:","label_default_access_mode":"Modo de acceso predeterminado:","label_file_name":"Nombre del archivo:","label_group_members":"Miembros del grupo:","label_incognito_mode":"Modo incógnito:","label_message_sound":"Sonido de mensaje:","label_muting_topic":"Silenciado:","label_other_user":"Otros","label_password":"Contraseña","label_permissions":"Permisos:","label_private":"Comentario privado","label_push_notifications":"Alertas de notificaciones:","label_push_notifications_disabled":"Alertas de notificaciones (requiere HTTPS):","label_reset_password":"Enviar un correo electrónico de restablecimiento de contraseña:","label_sdk":"SDK:","label_server":"Servidor:","label_server_address":"Dirección del servidor:","label_server_to_use":"Servidor para usar:","label_size":"Tamaño:","label_topic_name":"Nombre del tema","label_user_contacts":"Contactos:","label_user_id":"ID:","label_wire_transport":"Transporte de alambre:","label_you":"Tú:","label_your_name":"Tu nombre","label_your_permissions":"Tus permisos:","last_seen_timestamp":"Últ. vez","leave_chat_warning":"¿Estás seguro de que quieres dejar esta conversación?","link_contact_us":"Contáctanos","link_privacy_policy":"Política de privacidad","link_terms_of_service":"Términos de uso","login_prompt":"Nombre de usuario","menu_item_archive_topic":"Archivar","menu_item_block":"Bloquear","menu_item_clear_messages":"Borrar mensajes","menu_item_clear_messages_for_all":"Borrar para todos","menu_item_delete":"Eliminar","menu_item_delete_for_all":"Eliminar para todos","menu_item_delete_topic":"Eliminar","menu_item_edit_permissions":"Editar permisos","menu_item_info":"Información","menu_item_member_delete":"Eliminar","menu_item_mute":"Silenciar","menu_item_restore_topic":"Restaurar","menu_item_send_retry":"Inténtalo de nuevo","menu_item_unblock":"Desbloquear","menu_item_unmute":"Anular el silencio","message_sending":"enviando...","message_sending_failed":"no se pudo enviar el mensaje","messages_not_readable":"sin acceso a mensajes","messaging_disabled_prompt":"El envío de mensajes está deshabilitado","more_online_members":"+{overflow} más","new_message_prompt":"Nuevo mensaje","new_password_placeholder":"Introduzca una nueva contraseña","no_connection":"Sin conexión","no_contacts":"No tienes contactos :-(","numeric_confirmation_code_prompt":"Sólo números","online_now":"en línea","password_prompt":"Contraseña","password_unchanged_prompt":"Sin cambios","peers_messaging_disabled":"La mensajería Peer está deshabilitada.","permission_admin":"Approbar ({val})","permission_delete":"Eliminar ({val})","permission_join":"Unirse ({val})","permission_owner":"Propietario ({val})","permission_pres":"Ser notificado ({val})","permission_read":"Leer ({val})","permission_share":"Compartir ({val})","permission_write":"Escribir ({val})","phone_dative":"teléfono","private_editing_placeholder":"Sólo visible para tí","push_init_failed":"Error al inicializar las notificaciones push","reconnect_countdown":"Desconectado. Reconectando en {seconds}…","reconnect_now":"Reintentar","reload_update":"Recargar","report_chat_warning":"¿Estás seguro de que quieres bloquear y reportar a esta conversación?","requested_permissions":"Solicitados","save_attachment":"guardar","search_for_contacts":"Usa la búsqueda para encontrar contactos","search_no_results":"La búsqueda no arrojó resultados","search_placeholder":"Ej. email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notificaciones","sidepanel_title_acc_support":"Soporte","sidepanel_title_account_settings":"Ajustes de la cuenta","sidepanel_title_archive":"Chats archivados","sidepanel_title_blocked":"Chats bloqueados","sidepanel_title_cred":"Confirmar credenciales","sidepanel_title_login":"Iniciar sesión","sidepanel_title_newtpk":"Iniciar un nuevo chat","sidepanel_title_register":"Crear cuenta","sidepanel_title_reset":"Restablecer contraseña","sidepanel_title_settings":"Ajustes","stay_logged_in":"Permanecer conectado","tabtitle_find_user":"encontrar","tabtitle_group_by_id":"por ID","tabtitle_new_group":"nuevo grupo","tags_editor_no_tags":"Añadir etiquetas","tags_not_found":"No hay etiquetas definidas. Añade unas.","title_all_contacts":"Todos los contactos","title_group_members":"Miembros del grupo","title_manage_tags":"Gestionar","title_not_found":"No encontrado","title_permissions":"Permisos","title_tag_manager":"Etiquetas (descubrimiento de usuarios)","topic_block_warning":"¿Estás seguro de que quieres bloquear esta conversación","topic_delete_warning":"¿Estás seguro de que quieres eliminar esta conversación?","topic_name_editing_placeholder":"Nombre del grupo","unnamed_topic":"Sin nombre","update_available":"Actualización disponible.","upload_finishing":"terminando...","user_not_found":"Usuario no encontrado","validate_credential_action":"confirmar","description_editing_placeholder":"Descripción (opcional)","label_description":"Descripción","button_security":"Seguridad","panel_title_crop":"Arrastra para ajustar","panel_title_general":"General","panel_title_members":"Miembros","panel_title_security":"Seguridad","panel_title_info":"Información","permissions_anonymous":"Anónimo","permissions_authenticated":"Autenticado","topic_delete":"Eliminar chat","permissions_user":"Permisos del usuario","password_reset_email_sent":"Se ha enviado un correo electrónico a {email}. Siga las instrucciones del correo electrónico para restablecer su contraseña.","label_unarchive_topic":"Archivado:","menu_item_reply":"Respuesta","menu_item_forward":"Reenviar","forward_to":"Reenviar a","forward_to_search_placeholder":"Buscar contactos","label_new_password":"Nueva contraseña","drafty_unknown":"No soportado","calls_incoming":"Llamada entrante","calls_outgoing":"Llamada saliente","calls_you_label":"Tú","menu_item_video_call":"Videollamada","already_in_call":"¡Ya estás hablando!","call_cancelled":"cancelada","call_missed":"perdida","call_declined":"rechazada","call_disconnected":"desconectada","label_use_secure_connection":"Usar conexión segura","phone_or_email_prompt":"Número de teléfono o correo electrónico","cred_confirmed_successfully":"Confirmado con éxito"},"fr":{"action_block_contact":"Bloquer le Contact","action_cancel":"annuler","action_clear_messages":"Effacer les Messages","action_delete_messages":"Effacer les Messages pour Tous","action_leave_chat":"Quitter la Conversation","action_report_chat":"Signaler la Conversation","archived_contacts":"Contacts archivés ({count})","badge_danger":"Non fiable","badge_owner":"propriétaire","badge_staff":"Géré par le Staff","badge_verified":"Vérifié / Officiel","badge_you":"vous","block_contact_warning":"Êtes-vous sûr de bloquer le contact ?","blocked_contacts_link":"Contacts bloqués ({count})","button_add_another":"Ajouter un autre","button_add_members":"Ajouter des membres","button_cancel":"Annuler","button_confirm":"Confirmer","button_create":"Créer","button_delete_account":"Supprimer le compte","button_edit":"Modifier","button_logout":"Déconnexion","button_ok":"OK","button_reset":"Remettre à Zéro","button_send_request":"Envoyer une demande","button_sign_in":"Connexion","button_sign_up":"Créer un compte","button_subscribe":"S\'abonner","button_update":"Mettre à jour","cannot_initiate_file_upload":"Impossible de démarrer l\'envoi.","channel":"canal","channel_prompt":"C\'est un canal","chat_invitation":"Vous êtes invité à démarrer une conversation. Que voulez vous faire ?","chat_invitation_accept":"Accepter","chat_invitation_block":"Bloquer","chat_invitation_ignore":"Ignorer","clear_messages_warning":"Êtes-vous sûr de vouloir effacer tous les messages ? Aucun retour possible.","code_doesnot_match":"Le code ne correspond pas","contacts_not_found":"Vous n\'avez aucune conversation
¯∖_(ツ)_/¯","contacts_not_found_short":"Aucun contact ne correspond à \'\'{query}\'\'","credential_email_prompt":"Votre email d\'enregistrement","delete_account":"Supprimer le compte","delete_account_warning":"Êtes-vous sûr de vouloir supprimer votre compte ? Aucun retour possible.","delete_messages_warning":"Êtes-vous sûr de vouloir supprimer tous les messages pour tous ? Aucun retour possible.","deleted_content":"contenu supprimé","download_action":"télécharger","drafty_attachment":"Pièce(s) jointe(s)","drafty_form":"Formulaire:","drafty_image":"Image","email_dative":"email","email_prompt":"Email, par exemple jdoe@exemple.com","enable_peers_messaging":"Activer","enter_confirmation_code_prompt":"Entrez le code de confirmation envoyé par {method}:","error_invalid_id":"Identifiant invalide","file_attachment_too_large":"Le fichier de taille {size} dépasse la limite de {limit}.","forgot_password_link":"Mot de passe oublié ?","full_name_prompt":"Nom complet, par exemple John Doe","granted_permissions":"Accordé","group_has_no_members":"Aucun membre","group_user_id_prompt":"Identifiant d\'utilisateur ou de groupe","image_caption_prompt":"Description de l\'image","invalid_content":"contenu invalide","invalid_security_token":"Token de sécurité invalide","label_client":"Client :","label_content_type":"Type de contenu :","label_default_access_mode":"Mode d\'accès par défaut :","label_file_name":"Nom du fichier :","label_group_members":"Membres du groupe :","label_incognito_mode":"Mode incognito :","label_message_sound":"Son du message :","label_muting_topic":"Mué :","label_other_user":"Autre","label_password":"Mot de passe","label_permissions":"Permissions :","label_private":"Commentaire privé","label_push_notifications":"Notifications :","label_push_notifications_disabled":"Notifications (requière HTTPS):","label_reset_password":"Envoyer un mail de remise à zéro de mot de passe :","label_sdk":"SDK :","label_server":"Serveur :","label_server_address":"Adresse du serveur :","label_server_to_use":"Serveur à utiliser :","label_size":"Taille :","label_topic_name":"Nom","label_user_contacts":"Contacts :","label_user_id":"ID :","label_wire_transport":"Transport par cable :","label_you":"Vous :","label_your_name":"Votre nom","label_your_permissions":"Vos permissions :","last_seen_timestamp":"Vu pour la dernière fois","leave_chat_warning":"Êtes-vous sûr de vouloir quitter cette conversation ?","link_contact_us":"Contactez Nous","link_privacy_policy":"Politique de confidentialité","link_terms_of_service":"Conditions d\'utilisation","login_prompt":"Connexion","menu_item_archive_topic":"Archiver","menu_item_block":"Bloquer","menu_item_clear_messages":"Effacer les messages","menu_item_clear_messages_for_all":"Effacer pour Tous","menu_item_delete":"Supprimer","menu_item_delete_for_all":"Supprimer pour Tous","menu_item_delete_topic":"Supprimer","menu_item_edit_permissions":"Modifier les permissions","menu_item_info":"Informations","menu_item_member_delete":"Supprimer","menu_item_mute":"Rendre muer","menu_item_reply":"Répondre","menu_item_restore_topic":"Restorer","menu_item_send_retry":"Réessayer","menu_item_unblock":"Débloquer","menu_item_unmute":"Recevoir à nouveau","message_sending":"envoi en cours...","message_sending_failed":"échoué","messages_not_readable":"aucun accès aux messages","messaging_disabled_prompt":"Discussion désactivée","more_online_members":"+{overflow} de plus","new_message_prompt":"Nouveau message","new_password_placeholder":"Entrez un nouveau mot de passe","no_connection":"Aucune connexion","no_contacts":"Vous n\'avez pas de contacts :-(","numeric_confirmation_code_prompt":"Nombres seulement","online_now":"en ligne","password_prompt":"Mot de passe","password_unchanged_prompt":"Non changé","peers_messaging_disabled":"La messagerie point à point est désactivée.","permission_admin":"Approver ({val})","permission_delete":"Supprimer ({val})","permission_join":"Rejoindre ({val})","permission_owner":"Propriétaire ({val})","permission_pres":"Recevoir une notification ({val})","permission_read":"Lire ({val})","permission_share":"Partager ({val})","permission_write":"Ecrire ({val})","phone_dative":"téléphone","private_editing_placeholder":"Visible par vous seulement","push_init_failed":"Impossible d\'initialiser les notifications push","reconnect_countdown":"Déconnecté. Reconnexion dans {seconds}…","reconnect_now":"Essayer maintenant","reload_update":"Recharger","report_chat_warning":"Êtes-vous sûr de vouloir bloquer et signaler cette conversation ?","requested_permissions":"Demandé","save_attachment":"sauvegarder","search_for_contacts":"Utilisez la recherche pour trouver des contacts","search_no_results":"La recherche n\'a donné aucun résultat","search_placeholder":"Liste comme email:alice@exemple.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notifications","sidepanel_title_acc_support":"Support","sidepanel_title_account_settings":"Paramètres du compte","sidepanel_title_archive":"Conversations Archivées","sidepanel_title_blocked":"Conversations Bloquées","sidepanel_title_cred":"Confirmer les identifiants","sidepanel_title_login":"Se Connecter","sidepanel_title_newtpk":"Démarrer une nouvelle Conversation","sidepanel_title_register":"Créer un compte","sidepanel_title_reset":"Remettre à Zéro le Mot de Passe","sidepanel_title_settings":"Paramètres","stay_logged_in":"Rester connecté","tabtitle_find_user":"trouver","tabtitle_group_by_id":"par identifiant","tabtitle_new_group":"nouveau groupe","tags_editor_no_tags":"Ajouter des étiquettes","tags_not_found":"Aucune étiquette définie. Ajoutez en.","title_all_contacts":"Tous les Contacts","title_group_members":"Membres du Groupe","title_manage_tags":"Gérer","title_not_found":"Pas trouvé","title_permissions":"Permissions","title_tag_manager":"Etiquettes (recherche & découverte)","topic_block_warning":"Êtes-vous sûr de vouloir bloquer cette conversation ?","topic_delete_warning":"Êtes-vous sûr de vouloir supprimer cette conversation ?","topic_name_editing_placeholder":"Nom libre du groupe","unnamed_topic":"Non nommé","update_available":"Mise à jour disponible.","upload_finishing":"fin...","user_not_found":"Pas trouvé","validate_credential_action":"confirmer","description_editing_placeholder":"Description facultative","label_description":"Description","button_security":"Sécurité","panel_title_crop":"Déplacez pour ajuster","panel_title_general":"Général","panel_title_members":"Membres","panel_title_security":"Sécurité","panel_title_info":"Informations","permissions_anonymous":"Anonyme","permissions_authenticated":"Authentifié","topic_delete":"Supprimer la Conversation","permissions_user":"Permissions d\'Utilisateur","password_reset_email_sent":"Un email a été envoyé à {email}. Suivez les instructions du mail pour remettre à zéro votre mot de passe.","label_unarchive_topic":"Archivé:","menu_item_forward":"Transférer","forward_to":"Transférer à","forward_to_search_placeholder":"Rechercher des contacts","label_new_password":"Nouveau mot de passe","drafty_unknown":"Non supporté","already_in_call":"Vous êtes déjà dans un appel en cours!","call_cancelled":"annulé","call_declined":"refusé","call_missed":"manqué","calls_incoming":"Appel entrant","calls_outgoing":"Appel sortant","calls_you_label":"Tu","menu_item_video_call":"Appel vidéo","call_disconnected":"débranché","label_use_secure_connection":"Utiliser une connexion sécurisée","phone_or_email_prompt":"Numéro de téléphone ou email","cred_confirmed_successfully":"Confirmé avec succès"},"ko":{"action_block_contact":"연락차단","action_cancel":"취소","action_clear_messages":"메시지지우기","action_delete_messages":"모든메시지지우기","action_leave_chat":"대화나누기","action_report_chat":"대화기록","archived_contacts":"보관된연락처({수})","badge_danger":"의심 많은","badge_owner":"소유자","badge_staff":"직원 관리하에","badge_verified":"확인 됨","badge_you":"당신","block_contact_warning":"이연락처를차단하시겠습니까?","blocked_contacts_link":"차단된연락처({수})","button_add_another":"다른항목추가","button_add_members":"회원추가","button_cancel":"취소","button_confirm":"확인","button_create":"작성","button_delete_account":"계정삭제","button_edit":"편집","button_logout":"로그아웃","button_ok":"OK","button_reset":"재설정","button_send_request":"요청보내기","button_sign_in":"로그인","button_sign_up":"가입","button_subscribe":"구독","button_update":"업데이트","cannot_initiate_file_upload":"파일업로드를시작할수없습니다.","channel":"채널","channel_prompt":"이 채널입니다","chat_invitation":"새로운대화를시작하도록초대되었습니다.무엇을하시겠습니까?","chat_invitation_accept":"수락","chat_invitation_block":"차단","chat_invitation_ignore":"무시","clear_messages_warning":"모든메시지를지우시겠습니까?실행취소할수없습니다.","code_doesnot_match":"코드가일치하지않습니다","contacts_not_found":"채팅이없습니다
¯∖_(ツ)_/¯","contacts_not_found_short":"\'{문의}\'와일치하는연락처가없습니다.","credential_email_prompt":"등록이메일","delete_account":"계정삭제","delete_account_warning":"계정을삭제하시겠습니까?실행취소할수없습니다.","delete_messages_warning":"모든사람의모든메시지를삭제하시겠습니까?실행취소할수없습니다.","deleted_content":"내용이 삭제되었습니다","download_action":"다운로드","drafty_attachment":"부착","drafty_form":"형태:","drafty_image":"이미지","email_dative":"이메일","email_prompt":"이메일(예:hong@example.com)","enable_peers_messaging":"활성화","enter_confirmation_code_prompt":"{방법}으로보낸확인코드를입력하십시오:","error_invalid_id":"잘못된ID","file_attachment_too_large":"파일크기{크기}이(가){제한}제한을초과합니다.","forgot_password_link":"비밀번호를잊으셨습니까?","full_name_prompt":"전체이름(예:홍길동)","granted_permissions":"승낙하다","group_has_no_members":"회원없음","group_user_id_prompt":"그룹또는사용자ID","image_caption_prompt":"이미지설명","invalid_content":"잘못된내용","invalid_security_token":"유효하지않은보안토큰","label_client":"클라이언트: ","label_content_type":"컨텐츠유형: ","label_default_access_mode":"기본액세스모드: ","label_file_name":"파일이름: ","label_group_members":"그룹회원: ","label_incognito_mode":"시크릿모드: ","label_message_sound":"메시지소리: ","label_muting_topic":"음소거: ","label_other_user":"기타","label_password":"비밀번호","label_permissions":"권한: ","label_private":"개인코멘트","label_push_notifications":"통지경보: ","label_push_notifications_disabled":"통지경보(HTTPS필요): ","label_reset_password":"비밀번호재설정이메일보내기: ","label_sdk":"SDK:","label_server":"서버: ","label_server_address":"서버주소: ","label_server_to_use":"사용할서버:","label_size":"크기: ","label_topic_name":"이름","label_user_contacts":"연락처: ","label_user_id":"ID:","label_wire_transport":"와이어수송:","label_you":"당신: ","label_your_name":"이름","label_your_permissions":"권한: ","last_seen_timestamp":"마지막으로본","leave_chat_warning":"이대화를나가시겠습니까?","link_contact_us":"문의처","link_privacy_policy":"개인정보보호정책","link_terms_of_service":"서비스약관","login_prompt":"로그인","menu_item_archive_topic":"보관","menu_item_block":"차단","menu_item_clear_messages":"메시지지우기","menu_item_clear_messages_for_all":"모두지우기","menu_item_delete":"삭제","menu_item_delete_for_all":"모두삭제","menu_item_delete_topic":"삭제","menu_item_edit_permissions":"편집권한","menu_item_info":"정보","menu_item_member_delete":"제거","menu_item_mute":"음소거","menu_item_restore_topic":"복원","menu_item_send_retry":"다시시도","menu_item_unblock":"차단해제","menu_item_unmute":"음소거해제","message_sending":"보내기...","message_sending_failed":"실패","messages_not_readable":"메시지에 액세스 할 수 없습니다","messaging_disabled_prompt":"메시지비활성화","more_online_members":"+{넘침}더보기","new_message_prompt":"새메시지","new_password_placeholder":"새비밀번호입력","no_connection":"연결없음","no_contacts":"연락처가없습니다 (._.)","numeric_confirmation_code_prompt":"숫자만","online_now":"현재접속중","password_prompt":"비밀번호","password_unchanged_prompt":"변경되지않음","peers_messaging_disabled":"동료의메시지가비활성화되었습니다.","permission_admin":"승인({val})","permission_delete":"삭제({val})","permission_join":"참여({val})","permission_owner":"소유자({val})","permission_pres":"알림받기({val})","permission_read":"읽기({val})","permission_share":"공유({val})","permission_write":"쓰기({val})","phone_dative":"전화","private_editing_placeholder":"나만볼수있습니다","push_init_failed":"푸시알림을초기화하지못했습니다","reconnect_countdown":"연결이끊어졌습니다.다시연결하는중{초}…","reconnect_now":"지금시도","reload_update":"재로드","report_chat_warning":"이대화를차단하고기록하시겠습니까?","requested_permissions":"요청","save_attachment":"저장","search_for_contacts":"검색을사용하여연락처찾기","search_no_results":"검색결과가없습니다","search_placeholder":"email:alice@example.com,tel:17025550003...와같은목록","sidepanel_title_acc_notifications":"알림","sidepanel_title_acc_support":"지원","sidepanel_title_account_settings":"계정설정","sidepanel_title_archive":"보관된채팅","sidepanel_title_blocked":"차단된채팅","sidepanel_title_cred":"자격증명확인","sidepanel_title_login":"로그인","sidepanel_title_newtpk":"새채팅시작","sidepanel_title_register":"계정만들기","sidepanel_title_reset":"비밀번호재설정","sidepanel_title_settings":"설정","stay_logged_in":"로그인상태유지","tabtitle_find_user":"찾기","tabtitle_group_by_id":"id로","tabtitle_new_group":"새그룹","tags_editor_no_tags":"일부태그추가","tags_not_found":"태그가정의되지않았습니다.일부를추가하십시오.","title_all_contacts":"모든연락처","title_group_members":"그룹구성원","title_manage_tags":"관리","title_not_found":"찾을수없음","title_permissions":"권한","title_tag_manager":"태그(사용자검색)","topic_block_warning":"이대화를차단하시겠습니까?","topic_delete_warning":"이대화를삭제하시겠습니까?","topic_name_editing_placeholder":"그룹의자유형이름","unnamed_topic":"이름없는","update_available":"업데이트가능.","upload_finishing":"마무리...","user_not_found":"찾을수없음","validate_credential_action":"확인","description_editing_placeholder":"설명(선택 사항)","label_description":"설명","button_security":"보안","panel_title_crop":"드래그하여 조정","panel_title_general":"일반","panel_title_members":"구성원","panel_title_security":"보안","panel_title_info":"정보","permissions_anonymous":"익명","permissions_authenticated":"인증됨","topic_delete":"채팅 삭제","permissions_user":"사용자 권한","password_reset_email_sent":"이메일이 {email}(으)로 전송되었습니다. 이메일의 지침에 따라 비밀번호를 재설정하세요.","label_unarchive_topic":"보관됨:","menu_item_reply":"회신하다","menu_item_forward":"리디렉션","forward_to":"메시지를 리디렉션","forward_to_search_placeholder":"연락처 검색","label_new_password":"새 비밀번호","drafty_unknown":"지원되지 않음","calls_incoming":"수신 전화","calls_outgoing":"발신 전화","calls_you_label":"너","menu_item_video_call":"영상 통화","already_in_call":"당신은 이미 말하고 있습니다!","call_cancelled":"취소 된","call_missed":"부재중","call_declined":"통화 거부","call_disconnected":"연결 끊김","label_use_secure_connection":"보안 연결 사용","phone_or_email_prompt":"전화번호 또는 이메일","cred_confirmed_successfully":"성공적으로 확인됨"},"ro":{"action_block_contact":"Blochează contact","action_cancel":"anulează","action_clear_messages":"Șterge mesajele","action_delete_messages":"Șterge toate mesajele","action_leave_chat":"Ieși din conversație","action_report_chat":"Raportează conversația","archived_contacts":"Contacte arhivate ({count})","badge_danger":"Suspicios","badge_owner":"owner","badge_staff":"Administrare","badge_verified":"Verificat","badge_you":"tu","block_contact_warning":"Ești sigur că dorești să blochezi acest contact?","blocked_contacts_link":"Contact blocate ({count})","button_add_another":"Adaugă","button_add_members":"Adaugă persoane","button_cancel":"Anulează","button_confirm":"Confirmă","button_create":"Creează","button_delete_account":"Șterge cont","button_edit":"Editează","button_logout":"Deconectare","button_ok":"OK","button_reset":"Resetează","button_send_request":"Trimite cerere","button_sign_in":"Conectează-te","button_sign_up":"Creează cont","button_subscribe":"Subscribe","button_update":"Actualizează","cannot_initiate_file_upload":"Nu se poate face încărcarea.","channel":"canal","channel_prompt":"Acesta este un canal","chat_invitation":"Ai primit invitație într-o conversație. Accepți?","chat_invitation_accept":"Da, accept","chat_invitation_block":"Blochează","chat_invitation_ignore":"Ignoră","clear_messages_warning":"Ești sigur că dorești să ștergi mesajele? Acestea nu pot fi recuperate.","code_doesnot_match":"Codul furnizat nu este valid","contacts_not_found":"Nu ai contacte salvate
¯∖_(ツ)_/¯","contacts_not_found_short":"Niciun contact găsit după criteriile \'\'{query}\'\'","credential_email_prompt":"Adresa de e-mail","delete_account":"Șterge contul","delete_account_warning":"Ești sigur că dorești să ștergi contul? Acesta nu va putea fi recuperat.","delete_messages_warning":"Ești sigur că dorești să șterge mesajele din toate conversațiile? Acestea nu pot fi recuperate.","deleted_content":"conținut șters","download_action":"download","drafty_attachment":"Atasament","drafty_form":"Formă:","drafty_image":"Imagine","email_dative":"email","email_prompt":"Adresa de e-mail","enable_peers_messaging":"Activează","enter_confirmation_code_prompt":"Introu codul de confirmare trimis pe {method}:","error_invalid_id":"ID Invalid","file_attachment_too_large":"Dimensiunea fișiterului {size} depășește limita de {limit}.","forgot_password_link":"Ți-ai uitat parola?","full_name_prompt":"Numele tău","granted_permissions":"Oferite","group_has_no_members":"În acest grup nu se află persoane","group_user_id_prompt":"Grup sau user ID","image_caption_prompt":"Titlul imaginii","invalid_content":"conținut invalid","invalid_security_token":"Codul de securitate este invalid","label_client":"Client:","label_content_type":"Tip conținut:","label_default_access_mode":"Default access mode:","label_file_name":"Nume fișier:","label_group_members":"Membrii grupului:","label_incognito_mode":"Mod incognito:","label_message_sound":"Sunet de mesaj:","label_muting_topic":"Mod silențios (muted):","label_other_user":"Altele","label_password":"Parola","label_permissions":"Permisiuni:","label_private":"Comentariu privat","label_push_notifications":"Alerte de notificare:","label_push_notifications_disabled":"Alerte de notificare (necesită HTTPS):","label_reset_password":"Resetează parola:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Adresa serverului:","label_server_to_use":"Server de utilizat:","label_size":"Size:","label_topic_name":"Nume","label_user_contacts":"Contacte:","label_user_id":"ID:","label_wire_transport":"Transportul legat:","label_you":"Tu:","label_your_name":"Numele tău","label_your_permissions":"Permisiuniile tale:","last_seen_timestamp":"Văzut ultima dată","leave_chat_warning":"Ești sigur că dorești să ieși din conersație?","link_contact_us":"Contactează-ne","link_privacy_policy":"Politica de Confidențialitate","link_terms_of_service":"Termenii Serviciului","login_prompt":"Conectează-te","menu_item_archive_topic":"Arhivează","menu_item_block":"Blochează","menu_item_clear_messages":"Șterge mesajele","menu_item_clear_messages_for_all":"Ștergele pe toate","menu_item_delete":"Șterge","menu_item_delete_for_all":"Ștergele pe toate","menu_item_delete_topic":"Șterge","menu_item_edit_permissions":"Editează permisiuni","menu_item_info":"Info","menu_item_member_delete":"Șterge persoană","menu_item_mute":"Mute","menu_item_restore_topic":"Restabili","menu_item_send_retry":"Reîncearcă","menu_item_unblock":"Deblochează","menu_item_unmute":"Unmute","message_sending":"se trimite...","message_sending_failed":"eroare","messages_not_readable":"Mesajele nu pot fi citite","messaging_disabled_prompt":"Mesageria este dezactivată","more_online_members":"+{overflow} mai mult","new_message_prompt":"Mesaj nou","new_password_placeholder":"Introdu parolă","no_connection":"Nu există conexiune","no_contacts":"Nu ai contacte adăugate :-(","numeric_confirmation_code_prompt":"Doar cifre","online_now":"online acum","password_prompt":"Parola","password_unchanged_prompt":"Neschimbată","peers_messaging_disabled":"Mesageria de tip Peer este dezactivată.","permission_admin":"Aprobare ({val})","permission_delete":"Ștergere ({val})","permission_join":"Participare ({val})","permission_owner":"Deținător ({val})","permission_pres":"Notificare ({val})","permission_read":"Citire ({val})","permission_share":"Distribuire ({val})","permission_write":"Scriere ({val})","phone_dative":"telefon","private_editing_placeholder":"Vizibil doar ție","push_init_failed":"Nu s-a reușit inițializarea tip push notifications","reconnect_countdown":"Deconectat. Se încearcă conectarea în {seconds}…","reconnect_now":"Încearcă din nou","reload_update":"Reîncarcă","report_chat_warning":"Ești sigur că dorești să blochezi și să raportezi această conversație?","requested_permissions":"Necesare","save_attachment":"salvează","search_for_contacts":"Caută în contacte","search_no_results":"Nu s-au găsit rezultate","search_placeholder":"Caută după e-mail sau număr telefon...","sidepanel_title_acc_notifications":"Notificări","sidepanel_title_acc_support":"Ajutor","sidepanel_title_account_settings":"Setările Contului","sidepanel_title_archive":"Conversații Arhivate","sidepanel_title_blocked":"Conversații Blocate","sidepanel_title_cred":"Confirmă credențiale","sidepanel_title_login":"Conectează-te","sidepanel_title_newtpk":"Creeză un nou Chat","sidepanel_title_register":"Creează Cont","sidepanel_title_reset":"Resetează Parola","sidepanel_title_settings":"Setări","stay_logged_in":"Rămâi conectat","tabtitle_find_user":"caută","tabtitle_group_by_id":"după id","tabtitle_new_group":"grup nou","tags_editor_no_tags":"Adaugă tag-uri","tags_not_found":"Niciun tag definit. Adaugă.","title_all_contacts":"Toate Contactele","title_group_members":"Persoanele din grup","title_manage_tags":"Administrează","title_not_found":"Nu a fost găsit","title_permissions":"Permisiuni","title_tag_manager":"Tag-uri (user discovery)","topic_block_warning":"Ești sigur că dorești să blochezi această conversație?","topic_delete_warning":"Ești sigur că dorești să șterge această conversație?","topic_name_editing_placeholder":"Numele grupului","unnamed_topic":"Nedenumit","update_available":"Actualizare disponibilă.","upload_finishing":"se încarcă...","user_not_found":"Utilizatorul nu a fost găsit","validate_credential_action":"confirmă","description_editing_placeholder":"Descriere (opțional)","label_description":"Descriere","button_security":"Securitate","panel_title_crop":"Trageți pentru a ajusta","panel_title_general":"Generale","panel_title_members":"Membri","panel_title_security":"Securitate","panel_title_info":"Info","permissions_anonymous":"Anonim","permissions_authenticated":"Autentificat","topic_delete":"Ștergeți Chat","permissions_user":"Permisiunile utilizatorului","password_reset_email_sent":"Un e-mail a fost trimis către {email}. Urmați instrucțiunile din e-mail pentru a vă reseta parola.","label_unarchive_topic":"Arhivat:","menu_item_reply":"A raspunde","menu_item_forward":"Redirecţiona","forward_to":"Redirecționați către","forward_to_search_placeholder":"Căutați contacte","label_new_password":"Parolă Nouă","drafty_unknown":"Neacceptat","calls_incoming":"Apel primit","calls_outgoing":"Apel efectuat","calls_you_label":"Tu","menu_item_video_call":"Apel video","already_in_call":"Deja vorbesti!","call_cancelled":"anulat","call_missed":"pierdut","call_declined":"refuzat","call_disconnected":"deconectat","label_use_secure_connection":"Utilizați conexiune securizată","phone_or_email_prompt":"Număr de telefon sau e-mail","cred_confirmed_successfully":"Confirmat cu succes"},"ru":{"action_block_contact":"Заблокировать контакт","action_cancel":"отменить","action_clear_messages":"Удалить сообщения","action_delete_messages":"Удалить сообщения","action_leave_chat":"Уйти из чата","action_report_chat":"Сообщить о нарушении","archived_contacts":"Чаты в архиве ({count})","badge_danger":"Подозрительный","badge_owner":"влад.","badge_staff":"Администрация","badge_verified":"Верифицированный","badge_you":"вы","block_contact_warning":"Вы действительно заблокировать этот контакт?","blocked_contacts_link":"Заблокированные ({count})","button_add_another":"Добавить","button_add_members":"Добавить","button_cancel":"Отменить","button_confirm":"Подтвердить","button_create":"Создать","button_delete_account":"Удалить аккаунт","button_edit":"Изменить","button_logout":"Выйти","button_ok":"OK","button_reset":"Изменить","button_send_request":"Отправить","button_sign_in":"Войти","button_sign_up":"Создать аккаунт","button_subscribe":"Подписаться","button_update":"Применить","cannot_initiate_file_upload":"Ошибка загрузки файла.","channel":"канал","channel_prompt":"Создать канал","chat_invitation":"Вас пригласили начать новый чат. Как вы хотите поступить?","chat_invitation_accept":"Принять","chat_invitation_block":"Заблокировать","chat_invitation_ignore":"Игнорировать","clear_messages_warning":"Вы действительно хотите удалить все сообщения в чате? Их будет невозможно восстановить.","code_doesnot_match":"Код не совпадает","contacts_not_found":"Чатов нет
¯∖_(ツ)_/¯","contacts_not_found_short":"Нет контактов для запроса \'\'{query}\'\'","credential_email_prompt":"Регистрационный емейл","delete_account":"Удалить аккаунт","delete_account_warning":"Вы уверены, что ходите удалить свой аккаунт? Его невозможно будет восстановить.","delete_messages_warning":"Вы действительно хотите удалить все сообщения?","deleted_content":"удалено","download_action":"скачать","drafty_attachment":"Аттачмент","drafty_form":"Форма:","drafty_image":"Картинка","email_dative":"емейлу","email_prompt":"Email, напр. ivan@example.com","enable_peers_messaging":"Разблокировать.","enter_confirmation_code_prompt":"Код подтверждения, полученный по {method}:","error_invalid_id":"Неверный ID","file_attachment_too_large":"Размер файла {size} превышает {limit} лимит.","forgot_password_link":"Напомнить пароль","full_name_prompt":"Полное имя, напр. Иван Петров","granted_permissions":"Получены","group_has_no_members":"Нет участников","group_user_id_prompt":"ID чата или пользователя","image_caption_prompt":"Подпись к фото","invalid_content":"сообщение не читается","invalid_security_token":"Токен некорректен","label_client":"Клиент:","label_content_type":"Тип:","label_default_access_mode":"Доступ по умолчанию:","label_file_name":"Имя файла:","label_group_members":"Участники чата:","label_incognito_mode":"Режим инкогнито:","label_message_sound":"Звук нового сообщения:","label_muting_topic":"Без уведомлений","label_other_user":"Второй","label_password":"Пароль","label_permissions":"Права доступа:","label_private":"Комментарий","label_push_notifications":"Уведомления:","label_push_notifications_disabled":"Уведомления (требуют HTTPS):","label_reset_password":"Отправить емейл для смены пароля:","label_sdk":"SDK:","label_server":"Сервер:","label_server_address":"Адрес сервера:","label_server_to_use":"Использовать сервер:","label_size":"Размер:","label_topic_name":"Название","label_user_contacts":"Конакты:","label_user_id":"ID:","label_wire_transport":"Соединение:","label_you":"Вы:","label_your_name":"Ваше имя","label_your_permissions":"Ваши права доступа:","last_seen_timestamp":"Был активен","leave_chat_warning":"Вы действительно хотите покинуть этот чат?","link_contact_us":"Связаться с нами","link_privacy_policy":"Политика конфиденциальности","link_terms_of_service":"Условия сервиса","login_prompt":"Логин","menu_item_archive_topic":"В архив","menu_item_block":"Заблокировать","menu_item_clear_messages":"Удалить сообщения","menu_item_clear_messages_for_all":"Удалить для всех","menu_item_delete":"Удалить","menu_item_delete_for_all":"Удалить для всех","menu_item_delete_topic":"Удалить чат","menu_item_edit_permissions":"Права доступа","menu_item_info":"Информация","menu_item_member_delete":"Отписать","menu_item_mute":"Не уведомлять","menu_item_restore_topic":"Разархивировать","menu_item_send_retry":"Отправить заново","menu_item_unblock":"Разблокировать","menu_item_unmute":"Уведомлять","message_sending":"в пути...","message_sending_failed":"ошибка","messages_not_readable":"нет доступа к сообщениям","messaging_disabled_prompt":"Отправка недоступна","more_online_members":"+еще {overflow}","new_message_prompt":"Новое сообщение","new_password_placeholder":"Введите новый пароль","no_connection":"Нет связи","no_contacts":"Ничего нет :-(","numeric_confirmation_code_prompt":"Только цифры","online_now":"онлайн","password_prompt":"Пароль","password_unchanged_prompt":"Не изменен","peers_messaging_disabled":"Чат заблокирован у корреспондента.","permission_admin":"Подтверждать ({val})","permission_delete":"Удалять ({val})","permission_join":"Подписываться ({val})","permission_owner":"Владелец ({val})","permission_pres":"Уведомлять ({val})","permission_read":"Читать ({val})","permission_share":"Приглашать ({val})","permission_write":"Писать ({val})","phone_dative":"телефону","private_editing_placeholder":"Виден только вам","push_init_failed":"Ошибка инициализации пуш уведомлений","reconnect_countdown":"Нет связи. Подключение через {seconds}…","reconnect_now":"Подключить сейчас.","reload_update":"Обновить","report_chat_warning":"Вы действительно хотите сообщить о нарушении и заблокировать этот чат?","requested_permissions":"Требуются","save_attachment":"сохранить","search_for_contacts":"Поиск контактов","search_no_results":"Ничего не найдено","search_placeholder":"Список, напр. email:alice@example.com, tel:+17025550003...","sidepanel_title_acc_notifications":"Уведомления","sidepanel_title_acc_support":"Поддержка","sidepanel_title_account_settings":"Настройки аккаунта","sidepanel_title_archive":"Архив чатов","sidepanel_title_blocked":"Заблокированные чаты","sidepanel_title_cred":"Подтвердить","sidepanel_title_login":"Авторизация","sidepanel_title_newtpk":"Новый чат","sidepanel_title_register":"Зарегистрироваться","sidepanel_title_reset":"Сменить пароль","sidepanel_title_settings":"Настройки","stay_logged_in":"Запомнить","tabtitle_find_user":"найти","tabtitle_group_by_id":"по id","tabtitle_new_group":"создать","tags_editor_no_tags":"Добавьте теги","tags_not_found":"Тегов нет. Добавьте","title_all_contacts":"Все контакты","title_group_members":"Участники","title_manage_tags":"Редактировать","title_not_found":"Не найден","title_permissions":"Права доступа","title_tag_manager":"Теги для поиска","topic_block_warning":"Вы действительно хотите заблокировать этот чат?","topic_delete_warning":"Вы действительно хотите удалить этот чат?","topic_name_editing_placeholder":"Название чата","unnamed_topic":"Без названия","update_available":"Есть новая версия приложения.","upload_finishing":"завершение...","user_not_found":"Не найден","validate_credential_action":"подтвердить","description_editing_placeholder":"Описание (не обязательно)","label_description":"Описание","button_security":"Безопасность","panel_title_crop":"Обрезать картинку","panel_title_general":"Общие настройки","panel_title_members":"Участники","panel_title_security":"Безопасность","panel_title_info":"Подробности","permissions_anonymous":"Анонимный","permissions_authenticated":"Авторизованный","topic_delete":"Удалить чат","permissions_user":"Права доступа","password_reset_email_sent":"Сообщение было отправлено на адрес {email}. Следуйте инструкциям в сообщении, чтобы изменить пароль.","label_unarchive_topic":"Архивирован:","menu_item_reply":"Ответить","menu_item_forward":"Переслать","forward_to":"Переслать","forward_to_search_placeholder":"Поиск контактов","label_new_password":"Новый пароль","drafty_unknown":"Не поддерживается","calls_incoming":"Входящий звонок","calls_outgoing":"Исходящий звонок","calls_you_label":"Вы","menu_item_video_call":"Видеозвонок","already_in_call":"Вы уже звоните кому-то!","call_cancelled":"отменен","call_missed":"пропущен","call_declined":"отклонен","call_disconnected":"разъединен","label_use_secure_connection":"Безопасное соединение","phone_or_email_prompt":"Телефон или емейл","cred_confirmed_successfully":"Подтверждено успешно"},"zh-TW":{"action_block_contact":"封鎖聯絡人","action_cancel":"取消","action_clear_messages":"清除訊息","action_delete_messages":"為所有人清除訊息","action_leave_chat":"離開對話","action_report_chat":"檢舉對話","archived_contacts":"已封存的聯絡人 ({count})","badge_danger":"不可信","badge_owner":"擁有者","badge_staff":"員工管理","badge_verified":"已驗證/官方","badge_you":"您","block_contact_warning":"您確定要封鎖此聯絡人嗎?","blocked_contacts_link":"已封鎖的聯絡人 ({count})","button_add_another":"新增其他人","button_add_members":"新增成員","button_cancel":"取消","button_confirm":"確認","button_create":"建立","button_delete_account":"刪除帳號","button_edit":"編輯","button_logout":"登出","button_ok":"OK","button_reset":"重設","button_send_request":"傳送要求","button_sign_in":"登入","button_sign_up":"註冊","button_subscribe":"訂閱","button_update":"更新","cannot_initiate_file_upload":"無法為檔案上傳初始化。","channel":"頻道","channel_prompt":"這是頻道","chat_invitation":"您已被邀請開始新對話。您接下來要做什麼呢?","chat_invitation_accept":"接受","chat_invitation_block":"封鎖","chat_invitation_ignore":"忽略","clear_messages_warning":"您確定要清除所有訊息嗎?此操作無法復原。","code_doesnot_match":"代碼不相符","contacts_not_found":"您沒有任何對話
¯∖_(ツ)_/¯","contacts_not_found_short":"沒有符合 \'\'{query}\'\' 的聯絡人","credential_email_prompt":"您的註冊電子郵件地址","delete_account":"刪除帳號","delete_account_warning":"您確定要刪除您的帳戶嗎?此操作無法撤消。","delete_messages_warning":"您確定要為所有人刪除所有訊息嗎?此操作無法復原。","deleted_content":"內容已被刪除","download_action":"下載","drafty_attachment":"附加檔案","drafty_form":"表單:","drafty_image":"圖片","email_dative":"電子郵件地址","email_prompt":"電子郵件地址,例如:jdoe@example.com","enable_peers_messaging":"啟用","enter_confirmation_code_prompt":"輸入透過 {method} 傳送給您的確認碼:","error_invalid_id":"ID 無效","file_attachment_too_large":"檔案大小 {size} 超出 {limit} 限制。","forgot_password_link":"忘記密碼?","full_name_prompt":"全名,例如:王小明","granted_permissions":"已授權","group_has_no_members":"無成員","group_user_id_prompt":"群組或使用者 ID","image_caption_prompt":"圖片說明","invalid_content":"內容無效","invalid_security_token":"安全權杖無效","label_client":"客戶端:","label_content_type":"類型:","label_default_access_mode":"預設存取模式:","label_file_name":"檔名:","label_group_members":"群組成員:","label_incognito_mode":"無痕模式:","label_message_sound":"訊息提示聲:","label_muting_topic":"靜音:","label_other_user":"其他","label_password":"密碼","label_permissions":"權限:","label_private":"私人留言","label_push_notifications":"通知:","label_push_notifications_disabled":"通知 (需要 HTTPS):","label_reset_password":"傳送重設密碼郵件:","label_sdk":"SDK:","label_server":"伺服器:","label_server_address":"伺服器位址:","label_server_to_use":"使用的伺服器:","label_size":"大小:","label_topic_name":"名稱","label_user_contacts":"聯絡人:","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"您:","label_your_name":"您的名字","label_your_permissions":"您的權限:","last_seen_timestamp":"最後上線","leave_chat_warning":"您確定要離開此對話嗎?","link_contact_us":"聯絡我們","link_privacy_policy":"隱私權政策","link_terms_of_service":"服務條款","login_prompt":"登入","menu_item_archive_topic":"封存","menu_item_block":"封鎖","menu_item_clear_messages":"清除訊息","menu_item_clear_messages_for_all":"為所有人清除訊息","menu_item_delete":"刪除","menu_item_delete_for_all":"為所有人刪除","menu_item_delete_topic":"刪除","menu_item_edit_permissions":"編輯權限","menu_item_info":"Info","menu_item_member_delete":"移除","menu_item_mute":"靜音","menu_item_restore_topic":"恢復","menu_item_send_retry":"重試","menu_item_unblock":"解除封鎖","menu_item_unmute":"解除靜音","message_sending":"正在傳送...","message_sending_failed":"失敗","messages_not_readable":"沒有存取訊息的權限","messaging_disabled_prompt":"停用訊息","more_online_members":"+{overflow}","new_message_prompt":"新訊息","new_password_placeholder":"輸入新的密碼","no_connection":"無連線","no_contacts":"您沒有任何聯絡人 :-(","numeric_confirmation_code_prompt":"僅數字","online_now":"上線中","password_prompt":"密碼","password_unchanged_prompt":"未修改","peers_messaging_disabled":"Peer 已停用訊息。","permission_admin":"核可 ({val})","permission_delete":"刪除 ({val})","permission_join":"加入 ({val})","permission_owner":"擁有者 ({val})","permission_pres":"收到通知 ({val})","permission_read":"讀取 ({val})","permission_share":"分享 ({val})","permission_write":"撰寫 ({val})","phone_dative":"phone","private_editing_placeholder":"僅您可見","push_init_failed":"初始化通知失敗。","reconnect_countdown":"已斷線。將在 {seconds} 秒後重新連線…","reconnect_now":"現在重試","reload_update":"重新載入","report_chat_warning":"您確定要封鎖並檢舉此對話嗎?","requested_permissions":"重新請求","save_attachment":"儲存","search_for_contacts":"使用搜尋來尋找聯絡人","search_no_results":"搜尋無結果","search_placeholder":"例如 email:alice@example.com, tel:17025550003... 的清單","sidepanel_title_acc_notifications":"通知","sidepanel_title_acc_support":"支援","sidepanel_title_account_settings":"帳號設定","sidepanel_title_archive":"已封存的對話","sidepanel_title_blocked":"已封鎖的對話","sidepanel_title_cred":"確認認證","sidepanel_title_login":"登入","sidepanel_title_newtpk":"開始新對話","sidepanel_title_register":"建立帳號","sidepanel_title_reset":"重設密碼","sidepanel_title_settings":"設定","stay_logged_in":"保持登入","tabtitle_find_user":"尋找","tabtitle_group_by_id":"以 id","tabtitle_new_group":"新群組","tags_editor_no_tags":"新增一些標籤","tags_not_found":"未定義任何標籤。請新增一些標籤。","title_all_contacts":"所有聯絡人","title_group_members":"群組成員","title_manage_tags":"管理","title_not_found":"找不到","title_permissions":"權限","title_tag_manager":"標籤 (使用者探索)","topic_block_warning":"您確定要封鎖此對話嗎?","topic_delete_warning":"您確定要刪除此對話嗎?","topic_name_editing_placeholder":"群組的任意名稱","unnamed_topic":"未命名","update_available":"有可用的更新。","upload_finishing":"正在完成...","user_not_found":"找不到","validate_credential_action":"確認","description_editing_placeholder":"說明(可選)","label_description":"說明","button_security":"安全性","panel_title_crop":"拖動調整","panel_title_general":"一般","panel_title_members":"成員","panel_title_security":"安全性","panel_title_info":"資訊","permissions_anonymous":"匿名","permissions_authenticated":"已認證","topic_delete":"刪除聊天","permissions_user":"用戶權限","password_reset_email_sent":"一封電子郵件已發送至 {email}。按照電子郵件中的說明重置密碼。","label_unarchive_topic":"存檔聊天:","menu_item_reply":"回答","menu_item_forward":"重定向","forward_to":"重定向消息","forward_to_search_placeholder":"搜索聯繫人","label_new_password":"新密碼","drafty_unknown":"不支持","calls_incoming":"來電","calls_outgoing":"撥出電話","calls_you_label":"你","menu_item_video_call":"視頻電話","already_in_call":"你已經在說話了!","call_cancelled":"取消","call_missed":"未接","call_declined":"被拒","call_disconnected":"斷開連接","label_use_secure_connection":"使用安全連接","phone_or_email_prompt":"電話號碼或電子郵件","cred_confirmed_successfully":"確認成功"},"zh":{"action_block_contact":"屏蔽联系人","action_cancel":"取消","action_clear_messages":"删除讯息","action_delete_messages":"删除所有帖子","action_leave_chat":"离开","action_report_chat":"检举垃圾邮件","archived_contacts":"已归档联系人 ({count})","badge_danger":"可疑的","badge_owner":"所有者","badge_staff":"在员工管理下","badge_verified":"值得信赖","badge_you":"你","block_contact_warning":"您确定要阻止此联系人吗?","blocked_contacts_link":"封锁的联络人 ({count})","button_add_another":"加上另一个","button_add_members":"添加成员","button_cancel":"取消","button_confirm":"确认","button_create":"创建","button_delete_account":"删除帐户","button_edit":"编辑","button_logout":"登出","button_ok":"好","button_reset":"重置","button_send_request":"发送请求","button_sign_in":"登录","button_sign_up":"注册","button_subscribe":"订阅","button_update":"更新","cannot_initiate_file_upload":"无法初始化文件上传。","channel":"频道","channel_prompt":"这是一个频道","chat_invitation":"你受邀开始新会话。你想怎么做?","chat_invitation_accept":"接受","chat_invitation_block":"屏蔽","chat_invitation_ignore":"忽略","clear_messages_warning":"您确定要清除所有消息吗?无法撤消。","code_doesnot_match":"代码不匹配","contacts_not_found":"你尚无会话
¯∖_(ツ)_/¯","contacts_not_found_short":"无联系人匹配\'\'{query}\'\'","credential_email_prompt":"你的注册邮箱","delete_account":"删除帐户","delete_account_warning":"您确定要删除您的帐户吗?无法撤消。","delete_messages_warning":"您确定要删除所有消息吗?无法撤消。","deleted_content":"内容已删除","download_action":"下载","drafty_attachment":"附件","drafty_form":"形式:","drafty_image":"图像","email_dative":"电子邮件","email_prompt":"电子邮件,例如 zhang@example.com","enable_peers_messaging":"启用","enter_confirmation_code_prompt":"输入通过{method}发送的验证码:","error_invalid_id":"无效 ID","file_attachment_too_large":"文件大小 {size} 超过 {limit} 限制。","forgot_password_link":"忘记密码?","full_name_prompt":"全名,例如张伟","granted_permissions":"已授予","group_has_no_members":"无成员","group_user_id_prompt":"群组或用户 ID","image_caption_prompt":"图片标题","invalid_content":"无效内容","invalid_security_token":"无效的安全令牌","label_client":"客户端:","label_content_type":"内容类型:","label_default_access_mode":"蓦然访问模式:","label_file_name":"文件名:","label_group_members":"群组成员:","label_incognito_mode":"无痕模式:","label_message_sound":"消息提示音:","label_muting_topic":"已静音:","label_other_user":"其他","label_password":"密码","label_permissions":"权限:","label_private":"私人评论","label_push_notifications":"通知提醒:","label_push_notifications_disabled":"通知提醒(需要 HTTPS):","label_reset_password":"发送密码重置邮件:","label_sdk":"开发包:","label_server":"服务器:","label_server_address":"服务器地址:","label_server_to_use":"使用的服务器:","label_size":"大小:","label_topic_name":"名称","label_user_contacts":"往来:","label_user_id":"地址:","label_wire_transport":"线路传输:","label_you":"你:","label_your_name":"你的姓名","label_your_permissions":"你的权限:","last_seen_timestamp":"最后可见","leave_chat_warning":"您确定要退出此对话吗?","link_contact_us":"联系我们","link_privacy_policy":"隐私政策","link_terms_of_service":"条款和条件","login_prompt":"登录","menu_item_archive_topic":"归档","menu_item_block":"屏蔽","menu_item_clear_messages":"清空消息","menu_item_clear_messages_for_all":"全部清除","menu_item_delete":"删除","menu_item_delete_for_all":"全部删除","menu_item_delete_topic":"删除","menu_item_edit_permissions":"编辑权限","menu_item_info":"信息","menu_item_member_delete":"移除","menu_item_mute":"静音","menu_item_restore_topic":"从存档中恢复","menu_item_send_retry":"重试","menu_item_unblock":"取消屏蔽","menu_item_unmute":"取消静音","message_sending":"正在发送...","message_sending_failed":"发送失败","messages_not_readable":"无消息访问权限","messaging_disabled_prompt":"消息已禁用","more_online_members":"还有{overflow}个","new_message_prompt":"新消息","new_password_placeholder":"输入新密码","no_connection":"无连接","no_contacts":"你尚无联系人 (._.)","numeric_confirmation_code_prompt":"仅数字","online_now":"在线","password_prompt":"密码","password_unchanged_prompt":"未改变","peers_messaging_disabled":"成员间消息已禁用。","permission_admin":"批准 ({val})","permission_delete":"删除 ({val})","permission_join":"加入 ({val})","permission_owner":"所有者 ({val})","permission_pres":"获取通知 ({val})","permission_read":"读取 ({val})","permission_share":"分享 ({val})","permission_write":"写入 ({val})","phone_dative":"电话","private_editing_placeholder":"仅自己可见","push_init_failed":"初始化推送通知失败","reconnect_countdown":"连接已断开。{seconds} 秒后重新连接…","reconnect_now":"立即尝试","reload_update":"重新载入","report_chat_warning":"您确定要停止并报告此对话吗?","requested_permissions":"已请求","save_attachment":"保存","search_for_contacts":"使用搜索寻找联系人","search_no_results":"搜索返回任何结果","search_placeholder":"列表如 email:alice@example.com, tel:+17025550003...","sidepanel_title_acc_notifications":"通知","sidepanel_title_acc_support":"支持","sidepanel_title_account_settings":"帐号设定","sidepanel_title_archive":"已存档会话","sidepanel_title_blocked":"被阻止的聊天","sidepanel_title_cred":"确认凭据","sidepanel_title_login":"登录","sidepanel_title_newtpk":"开始新会话","sidepanel_title_register":"创建账户","sidepanel_title_reset":"重置密码","sidepanel_title_settings":"设置","stay_logged_in":"保持登录","tabtitle_find_user":"搜索","tabtitle_group_by_id":"通过 id","tabtitle_new_group":"新群组","tags_editor_no_tags":"添加一些标签","tags_not_found":"尚未定义标签。添加一些。","title_all_contacts":"全部联系人","title_group_members":"群组成员","title_manage_tags":"管理标签","title_not_found":"无法找到","title_permissions":"权限","title_tag_manager":"标签(用户发现)","topic_block_warning":"您确定要阻止此对话吗?","topic_delete_warning":"您确定要删除此对话吗?","topic_name_editing_placeholder":"群组自由格式名称","unnamed_topic":"未命名","update_available":"更新可用。","upload_finishing":"正在结束...","user_not_found":"未找到","validate_credential_action":"确认","description_editing_placeholder":"说明(可选)","label_description":"说明","button_security":"安全","panel_title_crop":"拖动调整","panel_title_general":"常用设定","panel_title_members":"成员","panel_title_security":"安全","panel_title_info":"信息","permissions_anonymous":"匿名","permissions_authenticated":"已认证","topic_delete":"删除聊天","permissions_user":"用户权限","password_reset_email_sent":"一封电子邮件已发送至 {email}。按照电子邮件中的说明重置密码。","label_unarchive_topic":"存档:","menu_item_reply":"回复","menu_item_forward":"重定向","forward_to":"重定向消息","forward_to_search_placeholder":"搜索联系人","label_new_password":"新密码","drafty_unknown":"不支持","calls_incoming":"来电","calls_outgoing":"拨出电话","calls_you_label":"你","menu_item_video_call":"视频电话","already_in_call":"你已经在说话了!","call_cancelled":"取消","call_missed":"未接","call_declined":"被拒","call_disconnected":"断开连接","label_use_secure_connection":"使用安全连接","phone_or_email_prompt":"电话号码或电子邮件","cred_confirmed_successfully":"确认成功"}}'); /***/ }) @@ -21330,7 +28217,7 @@ module.exports = JSON.parse('{"de":{"action_block_contact":"Kontakt blockieren", /******/ }; /******/ /******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; @@ -21391,8 +28278,9 @@ module.exports = JSON.parse('{"de":{"action_block_contact":"Kontakt blockieren", /******/ /************************************************************************/ var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +// This entry need to be wrapped in an IIFE because it need to be in strict mode. (() => { +"use strict"; /*!**********************!*\ !*** ./src/index.js ***! \**********************/ diff --git a/umd/index.dev.js.map b/umd/index.dev.js.map index b87f79e6..42438066 100644 --- a/umd/index.dev.js.map +++ b/umd/index.dev.js.map @@ -1 +1 @@ -{"version":3,"file":"index.dev.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAe;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,qBAAM;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAM;AACrB,eAAe,qBAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA,wCAAwC,MAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,wEAAwE,KAAK;;AAEhI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,MAAM;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa,GAAG,KAAK;AACjD;AACA;AACA;AACA,+BAA+B,iBAAiB,IAAI,SAAS,GAAG,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,IAAI;AACvD,KAAK;AACL;AACA,mBAAmB,MAAM,IAAI;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa,WAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,yBAAyB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ,UAAU,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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GAAG,gBAAgB,CACnD,CACC,CACH;EAEV;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvFgD;AAClB;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAAe;AACf;;;;;;;;;;;;;;;;;;;;ACvBoC;AACpC;;;;;;;;;;;ACDA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAoE;AACuB;AACkF;AAC9H;AAClB;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB,GAAG,gBAAgB;AAC7D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oDAAM;;AAEzB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB,sCAAsC,SAAS;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,cAAc;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA,8DAA8D,SAAS;AACvE,iEAAiE,SAAS;AAC1E,6DAA6D,SAAS;AACtE;AACA,oEAAoE,SAAS;AAC7E;AACA;AACA,wFAAwF,sBAAsB;AAC9G,2FAA2F,sBAAsB;AACjH,2FAA2F,sBAAsB;AACjH,kGAAkG,sBAAsB;AACxH;AACA,0BAA0B,wDAAY;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,uCAAuC;AACvC;AACA;AACA;AACA;AACA,wCAAwC,0DAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,qBAAqB;AAC/F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA,sBAAsB;AACtB;AACA,mCAAmC,iEAAiE;AACpG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,0BAA0B,mEAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yDAAS;AACrB,YAAY,yDAAS;AACrB;AACA;AACA;AACA,8EAA8E,eAAe;AAC7F;AACA;AACA,0BAA0B,mEAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iCAAiC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,eAAe;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,kBAAkB,QAAQ;AAC7E;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA,2BAA2B,0DAAS,IAAI,QAAQ,oBAAoB,kBAAkB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mEAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,6DAAa;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2CAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAa;AACtC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAa;AACtC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS,GAAG,kBAAkB;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kCAAkC;AAClD,6BAA6B,6EAA6B,kBAAkB,0CAA0C;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oEAAoB;AACjC;AACA;AACA;AACA,mBAAmB,yEAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,6EAA6B;AACxC;AACA,qBAAqB,yCAAyC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0DAAS;AACpC,2BAA2B,0DAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE2R;AAC3R;;;;;;;;;;;;;;;;;;ACt6B0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oDAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,WAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB,eAAe,UAAU;AAC1F;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,wCAAwC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,gBAAgB,eAAe;AAC/B;AACA;AACA,2BAA2B,UAAU,GAAG,qBAAqB;AAC7D;AACA;AACA,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB,mCAAmC,UAAU;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEmD;AACnD;;;;;;;;;;;;;;;;;;;;;;;ACxZ0F;AAC1C;AACa;AAChC;;AAE7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA,gDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,WAAW;AAClH;AACA;AACA,+CAA+C,cAAc,4BAA4B,cAAc,cAAc,GAAG,eAAe;AACvI;AACA;AACA;AACA,0BAA0B,wDAAY;AACtC;AACA;AACA,6BAA6B,yDAAa;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,WAAW;AAC/C,cAAc,sBAAsB,YAAY,UAAU;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yCAAyC,cAAc;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uBAAuB,EAAE,aAAa;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qCAAqC,IAAI,KAAK;AACzF;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,GAAG;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,kBAAkB,GAAG,gBAAgB;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2CAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yCAAyC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,qCAAqC;AAC/E;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,KAAK;AACxD,cAAc,oCAAoC,GAAG,IAAI;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,eAAe,aAAa,sCAAsC;AACnH;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,uEAAuE,wBAAwB,WAAW;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,wBAAwB,aAAa,sCAAsC;AACtJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,eAAe,gCAAgC;AACxF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yCAAyC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,KAAK;AAC7C,cAAc,oCAAoC,GAAG,IAAI;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD,IAAI,iCAAiC;AACrC,qBAAqB,iCAAiC;AACtD;AACA;AACA;AACA,gCAAgC,qDAAM;AACtC,8BAA8B,2DAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2DAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2DAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,iEAAkB,KAAK,0DAAS;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8DAAe;AACf;AACA,8DAAe;;AAE+D;AAC9E;;;;;;;;;;;;;;;;;;ACjoCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,KAAK,cAAc;AACnD;AACA;AACA,sFAAsF,QAAQ;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAE4D;AAC5D;;;;;;;;;;;;;;;;;;;;;;;;AC1NiC;AACe;AACT;AAC+F;AAC5C;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;AAEvC;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2CAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,UAAU,6CAAQ;AAClB,UAAU,6CAAQ;AAClB,UAAU,6CAAQ;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2CAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,WAAW;AAClH;AACA;AACA;AACA;AACA;AACA;AACA,sIAAsI,qBAAqB;AAC3J,qHAAqH,WAAW;AAChI;AACA;AACA,yBAAyB,WAAW;AACpC,8GAA8G,WAAW;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAY;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4CAA4C,GAAG,mBAAmB;AAC1G;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4CAA4C,GAAG,MAAM;AAC7F;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uBAAuB,WAAW;AAClC,cAAc,SAAS,YAAY,UAAU;AAC7C;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA,qDAAqD,UAAU;AAC/D,KAAK;AACL;AACA,mBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB,6CAA6C;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,8DAAe;AACnB;AACA,IAAI,8DAAe;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,yEAAyB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAoB;AAC5B,QAAQ,iEAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qDAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,WAAW,2DAAY,CAAC,kEAAkB;AAC1C;AACA;AACA,mBAAmB,iBAAiB;AACpC,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;AACA;AACA,wDAAwD,iBAAiB;AACzE,QAAQ,iBAAiB;AACzB;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEoH;AACpH;;;;;;;;;;;;;;;;;;;ACrtCmE;AACN;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAyC,IAAI;AAC9E;AACA,wBAAwB,qDAAI;AAC5B;AACA;AACA,oBAAoB,qDAAI,sDAAsD,qDAAI;AAClF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,UAAU,IAAI;AACxC;AACA;AACA;AACA,WAAW,qDAAI;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAY;AACZ;AACA;AACA;AACA,CAAC;;AAE2B;;;;;;;;;;;;;;;;;;;ACvF5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEqG;;;;;;;;;;;;;;;;;UCxLrG;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;ACH0B;AACO;AAES;AAEA;AACK;AACE;;AAIjD,MAAM;EAAEr+B;AAAO,CAAC,GAAGJ,uEAA2B,CAACzG,MAAM,CAACoF,QAAQ,CAACuB,IAAI,CAAC;AACpE,MAAM4B,QAAQ,GAAI1B,MAAM,IAAIA,MAAM,CAACkkD,EAAE,IAClC1iD,SAAS,CAAC2iD,SAAS,IAAI3iD,SAAS,CAAC2iD,SAAS,CAAC,CAAC,CAAE,IAC/C3iD,SAAS,CAACE,QAAQ,IAClBF,SAAS,CAACC,YAAY,IACtB,IAAI;;AAGN,MAAM2iD,YAAY,GAAG1iD,QAAQ,CAACwwC,WAAW,EAAE,CAAC37C,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;AAG5D,MAAM8tD,QAAQ,GAAGJ,2CAAW,CAACviD,QAAQ,CAAC,GAAGA,QAAQ,GAAGuiD,2CAAW,CAACG,YAAY,CAAC,GAAGA,YAAY,GAAG,IAAI;AACnG,MAAM/pD,QAAQ,GAAG4pD,2CAAW,CAACI,QAAQ,CAAC;;AAGtCvvD,QAAQ,CAACoP,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAACogD,YAAY,CAAC,MAAM,EAAED,QAAQ,CAAC;AAEvEN,uDAAe,CACb,2DAAC,yDAAgB,QACf,2DAAC,oDAAY;EAAC,MAAM,EAAEriD,QAAS;EAAC,QAAQ,EAAErH,QAAS;EAAC,aAAa,EAAEb,uDAAcyD;AAAC,GAChF,2DAAC,6DAAS,OAAG,CACA,CACE,EACnBnI,QAAQ,CAACkP,cAAc,CAAC,YAAY,CAAC,CACtC,C","sources":["webpack://tinode-webapp/./node_modules/@firebase/util/dist/index.esm2017.js","webpack://tinode-webapp/./src/config.js","webpack://tinode-webapp/./src/constants.js","webpack://tinode-webapp/./src/lib/blob-helpers.js","webpack://tinode-webapp/./src/lib/formatters.js","webpack://tinode-webapp/./src/lib/host-name.js","webpack://tinode-webapp/./src/lib/local-storage.js","webpack://tinode-webapp/./src/lib/navigation.js","webpack://tinode-webapp/./src/lib/strformat.js","webpack://tinode-webapp/./src/lib/utils.js","webpack://tinode-webapp/./src/version.js","webpack://tinode-webapp/./src/views/acc-notifications-view.jsx","webpack://tinode-webapp/./src/views/acc-security-view.jsx","webpack://tinode-webapp/./src/views/acc-support-view.jsx","webpack://tinode-webapp/./src/views/account-settings-view.jsx","webpack://tinode-webapp/./src/views/contacts-view.jsx","webpack://tinode-webapp/./src/views/create-account-view.jsx","webpack://tinode-webapp/./src/views/info-view.jsx","webpack://tinode-webapp/./src/views/login-view.jsx","webpack://tinode-webapp/./src/views/logo-view.jsx","webpack://tinode-webapp/./src/views/messages-view.jsx","webpack://tinode-webapp/./src/views/new-topic-view.jsx","webpack://tinode-webapp/./src/views/password-reset-view.jsx","webpack://tinode-webapp/./src/views/settings-view.jsx","webpack://tinode-webapp/./src/views/sidepanel-view.jsx","webpack://tinode-webapp/./src/views/tinode-web.jsx","webpack://tinode-webapp/./src/views/validation-view.jsx","webpack://tinode-webapp/./src/widgets/alert.jsx","webpack://tinode-webapp/./src/widgets/attachment.jsx","webpack://tinode-webapp/./src/widgets/audio-player.jsx","webpack://tinode-webapp/./src/widgets/audio-recorder.jsx","webpack://tinode-webapp/./src/widgets/avatar-crop.jsx","webpack://tinode-webapp/./src/widgets/avatar-upload.jsx","webpack://tinode-webapp/./src/widgets/badge-list.jsx","webpack://tinode-webapp/./src/widgets/button-back.jsx","webpack://tinode-webapp/./src/widgets/call-incoming.jsx","webpack://tinode-webapp/./src/widgets/call-message.jsx","webpack://tinode-webapp/./src/widgets/call-panel.jsx","webpack://tinode-webapp/./src/widgets/call-status.jsx","webpack://tinode-webapp/./src/widgets/chat-message.jsx","webpack://tinode-webapp/./src/widgets/checkbox.jsx","webpack://tinode-webapp/./src/widgets/chip-input.jsx","webpack://tinode-webapp/./src/widgets/chip.jsx","webpack://tinode-webapp/./src/widgets/contact-action.jsx","webpack://tinode-webapp/./src/widgets/contact-badges.jsx","webpack://tinode-webapp/./src/widgets/contact-list.jsx","webpack://tinode-webapp/./src/widgets/contact.jsx","webpack://tinode-webapp/./src/widgets/context-menu.jsx","webpack://tinode-webapp/./src/widgets/cropper.jsx","webpack://tinode-webapp/./src/widgets/doc-preview.jsx","webpack://tinode-webapp/./src/widgets/error-panel.jsx","webpack://tinode-webapp/./src/widgets/file-progress.jsx","webpack://tinode-webapp/./src/widgets/forward-dialog.jsx","webpack://tinode-webapp/./src/widgets/group-manager.jsx","webpack://tinode-webapp/./src/widgets/group-subs.jsx","webpack://tinode-webapp/./src/widgets/host-selector.jsx","webpack://tinode-webapp/./src/widgets/image-preview.jsx","webpack://tinode-webapp/./src/widgets/in-place-edit.jsx","webpack://tinode-webapp/./src/widgets/invitation.jsx","webpack://tinode-webapp/./src/widgets/lazy-image.jsx","webpack://tinode-webapp/./src/widgets/letter-tile.jsx","webpack://tinode-webapp/./src/widgets/load-spinner.jsx","webpack://tinode-webapp/./src/widgets/menu-cancel.jsx","webpack://tinode-webapp/./src/widgets/menu-contacts.jsx","webpack://tinode-webapp/./src/widgets/menu-start.jsx","webpack://tinode-webapp/./src/widgets/meta-message.jsx","webpack://tinode-webapp/./src/widgets/new-topic-by-id.jsx","webpack://tinode-webapp/./src/widgets/new-topic-group.jsx","webpack://tinode-webapp/./src/widgets/permissions-editor.jsx","webpack://tinode-webapp/./src/widgets/received-marker.jsx","webpack://tinode-webapp/./src/widgets/search-contacts.jsx","webpack://tinode-webapp/./src/widgets/send-message.jsx","webpack://tinode-webapp/./src/widgets/side-navbar.jsx","webpack://tinode-webapp/./src/widgets/tag-manager.jsx","webpack://tinode-webapp/./src/widgets/topic-common.jsx","webpack://tinode-webapp/./src/widgets/topic-desc-edit.jsx","webpack://tinode-webapp/./src/widgets/topic-security.jsx","webpack://tinode-webapp/./src/widgets/unread-badge.jsx","webpack://tinode-webapp/./src/widgets/uploading-image.jsx","webpack://tinode-webapp/./src/widgets/visible-password.jsx","webpack://tinode-webapp/./node_modules/firebase/app/dist/index.esm.js","webpack://tinode-webapp/./node_modules/firebase/messaging/dist/index.esm.js","webpack://tinode-webapp/external var \"React\"","webpack://tinode-webapp/external var \"ReactDOM\"","webpack://tinode-webapp/external var \"ReactIntl\"","webpack://tinode-webapp/external var \"Tinode\"","webpack://tinode-webapp/./node_modules/@firebase/app/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/component/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/installations/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/logger/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/messaging/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/idb/build/index.js","webpack://tinode-webapp/./node_modules/idb/build/wrap-idb-value.js","webpack://tinode-webapp/webpack/bootstrap","webpack://tinode-webapp/webpack/runtime/compat get default export","webpack://tinode-webapp/webpack/runtime/define property getters","webpack://tinode-webapp/webpack/runtime/global","webpack://tinode-webapp/webpack/runtime/hasOwnProperty shorthand","webpack://tinode-webapp/webpack/runtime/make namespace object","webpack://tinode-webapp/./src/index.js"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nconst CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws an error if the provided assertion is falsy\r\n */\r\nconst assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\r\nconst assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst stringToByteArray$1 = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) === 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\r\nconst byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n const c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n const c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n const c4 = bytes[pos++];\r\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nconst base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray(input, webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n const byteToCharMap = webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length; i += 3) {\r\n const byte1 = input[i];\r\n const haveByte2 = i + 1 < input.length;\r\n const byte2 = haveByte2 ? input[i + 1] : 0;\r\n const haveByte3 = i + 2 < input.length;\r\n const byte3 = haveByte3 ? input[i + 2] : 0;\r\n const outByte1 = byte1 >> 2;\r\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n let outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray(input, webSafe) {\r\n this.init_();\r\n const charToByteMap = webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length;) {\r\n const byte1 = charToByteMap[input.charAt(i++)];\r\n const haveByte2 = i < input.length;\r\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n const haveByte3 = i < input.length;\r\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n const haveByte4 = i < input.length;\r\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw Error();\r\n }\r\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 !== 64) {\r\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 !== 64) {\r\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_() {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * URL-safe base64 encoding\r\n */\r\nconst base64Encode = function (str) {\r\n const utf8Bytes = stringToByteArray$1(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 encoding (without \".\" padding in the end).\r\n * e.g. Used in JSON Web Token (JWT) parts.\r\n */\r\nconst base64urlEncodeWithoutPadding = function (str) {\r\n // Use base64url encoding and remove padding in the end (dot characters).\r\n return base64Encode(str).replace(/\\./g, '');\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\r\nconst base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n *\r\n * Note: we don't merge __proto__ to prevent prototype pollution\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n const dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (const prop in source) {\r\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\r\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\nfunction isValidKey(key) {\r\n return key !== '__proto__';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\r\nfunction getUA() {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n}\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment\r\n */\r\nfunction isBrowser() {\r\n return typeof self === 'object' && self.self === self;\r\n}\r\nfunction isBrowserExtension() {\r\n const runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n const ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\r\n/** Returns true if we are running in Safari. */\r\nfunction isSafari() {\r\n return (!isNode() &&\r\n navigator.userAgent.includes('Safari') &&\r\n !navigator.userAgent.includes('Chrome'));\r\n}\r\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\r\nfunction isIndexedDBAvailable() {\r\n return typeof indexedDB === 'object';\r\n}\r\n/**\r\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n *\r\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\r\n * private browsing)\r\n */\r\nfunction validateIndexedDBOpenable() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n let preExist = true;\r\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\r\n const request = self.indexedDB.open(DB_CHECK_NAME);\r\n request.onsuccess = () => {\r\n request.result.close();\r\n // delete database only when it doesn't pre-exist\r\n if (!preExist) {\r\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\r\n }\r\n resolve(true);\r\n };\r\n request.onupgradeneeded = () => {\r\n preExist = false;\r\n };\r\n request.onerror = () => {\r\n var _a;\r\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\r\n };\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\r\nfunction areCookiesEnabled() {\r\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Polyfill for `globalThis` object.\r\n * @returns the `globalThis` object for the given environment.\r\n */\r\nfunction getGlobal() {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n throw new Error('Unable to locate global object.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst getDefaultsFromGlobal = () => getGlobal().__FIREBASE_DEFAULTS__;\r\n/**\r\n * Attempt to read defaults from a JSON string provided to\r\n * process.env.__FIREBASE_DEFAULTS__ or a JSON file whose path is in\r\n * process.env.__FIREBASE_DEFAULTS_PATH__\r\n */\r\nconst getDefaultsFromEnvVariable = () => {\r\n if (typeof process === 'undefined' || typeof process.env === 'undefined') {\r\n return;\r\n }\r\n const defaultsJsonString = process.env.__FIREBASE_DEFAULTS__;\r\n if (defaultsJsonString) {\r\n return JSON.parse(defaultsJsonString);\r\n }\r\n};\r\nconst getDefaultsFromCookie = () => {\r\n if (typeof document === 'undefined') {\r\n return;\r\n }\r\n let match;\r\n try {\r\n match = document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/);\r\n }\r\n catch (e) {\r\n // Some environments such as Angular Universal SSR have a\r\n // `document` object but error on accessing `document.cookie`.\r\n return;\r\n }\r\n const decoded = match && base64Decode(match[1]);\r\n return decoded && JSON.parse(decoded);\r\n};\r\n/**\r\n * Get the __FIREBASE_DEFAULTS__ object. It checks in order:\r\n * (1) if such an object exists as a property of `globalThis`\r\n * (2) if such an object was provided on a shell environment variable\r\n * (3) if such an object exists in a cookie\r\n */\r\nconst getDefaults = () => {\r\n try {\r\n return (getDefaultsFromGlobal() ||\r\n getDefaultsFromEnvVariable() ||\r\n getDefaultsFromCookie());\r\n }\r\n catch (e) {\r\n /**\r\n * Catch-all for being unable to get __FIREBASE_DEFAULTS__ due\r\n * to any environment case we have not accounted for. Log to\r\n * info instead of swallowing so we can find these unknown cases\r\n * and add paths for them if needed.\r\n */\r\n console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);\r\n return;\r\n }\r\n};\r\n/**\r\n * Returns emulator host stored in the __FIREBASE_DEFAULTS__ object\r\n * for the given product.\r\n * @returns a URL host formatted like `127.0.0.1:9999` or `[::1]:4000` if available\r\n * @public\r\n */\r\nconst getDefaultEmulatorHost = (productName) => { var _a, _b; return (_b = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.emulatorHosts) === null || _b === void 0 ? void 0 : _b[productName]; };\r\n/**\r\n * Returns emulator hostname and port stored in the __FIREBASE_DEFAULTS__ object\r\n * for the given product.\r\n * @returns a pair of hostname and port like `[\"::1\", 4000]` if available\r\n * @public\r\n */\r\nconst getDefaultEmulatorHostnameAndPort = (productName) => {\r\n const host = getDefaultEmulatorHost(productName);\r\n if (!host) {\r\n return undefined;\r\n }\r\n const separatorIndex = host.lastIndexOf(':'); // Finding the last since IPv6 addr also has colons.\r\n if (separatorIndex <= 0 || separatorIndex + 1 === host.length) {\r\n throw new Error(`Invalid host ${host} with no separate hostname and port!`);\r\n }\r\n // eslint-disable-next-line no-restricted-globals\r\n const port = parseInt(host.substring(separatorIndex + 1), 10);\r\n if (host[0] === '[') {\r\n // Bracket-quoted `[ipv6addr]:port` => return \"ipv6addr\" (without brackets).\r\n return [host.substring(1, separatorIndex - 1), port];\r\n }\r\n else {\r\n return [host.substring(0, separatorIndex), port];\r\n }\r\n};\r\n/**\r\n * Returns Firebase app config stored in the __FIREBASE_DEFAULTS__ object.\r\n * @public\r\n */\r\nconst getDefaultAppConfig = () => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.config; };\r\n/**\r\n * Returns an experimental setting on the __FIREBASE_DEFAULTS__ object (properties\r\n * prefixed by \"_\")\r\n * @public\r\n */\r\nconst getExperimentalSetting = (name) => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a[`_${name}`]; };\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Deferred {\r\n constructor() {\r\n this.reject = () => { };\r\n this.resolve = () => { };\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\r\n wrapCallback(callback) {\r\n return (error, value) => {\r\n if (error) {\r\n this.reject(error);\r\n }\r\n else {\r\n this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n this.promise.catch(() => { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createMockUserToken(token, projectId) {\r\n if (token.uid) {\r\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\r\n }\r\n // Unsecured JWTs use \"none\" as the algorithm.\r\n const header = {\r\n alg: 'none',\r\n type: 'JWT'\r\n };\r\n const project = projectId || 'demo-project';\r\n const iat = token.iat || 0;\r\n const sub = token.sub || token.user_id;\r\n if (!sub) {\r\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\r\n }\r\n const payload = Object.assign({ \r\n // Set all required fields to decent defaults\r\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\r\n sign_in_provider: 'custom',\r\n identities: {}\r\n } }, token);\r\n // Unsecured JWTs use the empty string as a signature.\r\n const signature = '';\r\n return [\r\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\r\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\r\n signature\r\n ].join('.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Standardized Firebase Error.\r\n *\r\n * Usage:\r\n *\r\n * // Typescript string literals for type-safe codes\r\n * type Err =\r\n * 'unknown' |\r\n * 'object-not-found'\r\n * ;\r\n *\r\n * // Closure enum for type-safe error codes\r\n * // at-enum {string}\r\n * var Err = {\r\n * UNKNOWN: 'unknown',\r\n * OBJECT_NOT_FOUND: 'object-not-found',\r\n * }\r\n *\r\n * let errors: Map = {\r\n * 'generic-error': \"Unknown error\",\r\n * 'file-not-found': \"Could not find file: {$file}\",\r\n * };\r\n *\r\n * // Type-safe function - must pass a valid error code as param.\r\n * let error = new ErrorFactory('service', 'Service', errors);\r\n *\r\n * ...\r\n * throw error.create(Err.GENERIC);\r\n * ...\r\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\r\n * ...\r\n * // Service: Could not file file: foo.txt (service/file-not-found).\r\n *\r\n * catch (e) {\r\n * assert(e.message === \"Could not find file: foo.txt.\");\r\n * if ((e as FirebaseError)?.code === 'service/file-not-found') {\r\n * console.log(\"Could not read file: \" + e['file']);\r\n * }\r\n * }\r\n */\r\nconst ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nclass FirebaseError extends Error {\r\n constructor(\r\n /** The error code for this error. */\r\n code, message, \r\n /** Custom data for this error. */\r\n customData) {\r\n super(message);\r\n this.code = code;\r\n this.customData = customData;\r\n /** The custom name for all FirebaseErrors. */\r\n this.name = ERROR_NAME;\r\n // Fix For ES5\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\r\n }\r\n }\r\n}\r\nclass ErrorFactory {\r\n constructor(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n }\r\n create(code, ...data) {\r\n const customData = data[0] || {};\r\n const fullCode = `${this.service}/${code}`;\r\n const template = this.errors[code];\r\n const message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\r\n const error = new FirebaseError(fullCode, fullMessage, customData);\r\n return error;\r\n }\r\n}\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, (_, key) => {\r\n const value = data[key];\r\n return value != null ? String(value) : `<${key}?>`;\r\n });\r\n}\r\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst decode = function (token) {\r\n let header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n const parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header,\r\n claims,\r\n data,\r\n signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidTimestamp = function (token) {\r\n const claims = decode(token).claims;\r\n const now = Math.floor(new Date().getTime() / 1000);\r\n let validSince = 0, validUntil = 0;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (!!now &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst issuedAtTime = function (token) {\r\n const claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidFormat = function (token) {\r\n const decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isAdmin = function (token) {\r\n const claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n const res = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\r\n/**\r\n * Deep equal two objects. Support Arrays and Objects.\r\n */\r\nfunction deepEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n const aKeys = Object.keys(a);\r\n const bKeys = Object.keys(b);\r\n for (const k of aKeys) {\r\n if (!bKeys.includes(k)) {\r\n return false;\r\n }\r\n const aProp = a[k];\r\n const bProp = b[k];\r\n if (isObject(aProp) && isObject(bProp)) {\r\n if (!deepEqual(aProp, bProp)) {\r\n return false;\r\n }\r\n }\r\n else if (aProp !== bProp) {\r\n return false;\r\n }\r\n }\r\n for (const k of bKeys) {\r\n if (!aKeys.includes(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isObject(thing) {\r\n return thing !== null && typeof thing === 'object';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Rejects if the given promise doesn't resolve in timeInMS milliseconds.\r\n * @internal\r\n */\r\nfunction promiseWithTimeout(promise, timeInMS = 2000) {\r\n const deferredPromise = new Deferred();\r\n setTimeout(() => deferredPromise.reject('timeout!'), timeInMS);\r\n promise.then(deferredPromise.resolve, deferredPromise.reject);\r\n return deferredPromise.promise;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n const params = [];\r\n for (const [key, value] of Object.entries(querystringParams)) {\r\n if (Array.isArray(value)) {\r\n value.forEach(arrayVal => {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n }\r\n return params.length ? '&' + params.join('&') : '';\r\n}\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(querystring) {\r\n const obj = {};\r\n const tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(token => {\r\n if (token) {\r\n const [key, value] = token.split('=');\r\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\r\n }\r\n });\r\n return obj;\r\n}\r\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\r\nfunction extractQuerystring(url) {\r\n const queryStart = url.indexOf('?');\r\n if (!queryStart) {\r\n return '';\r\n }\r\n const fragmentStart = url.indexOf('#', queryStart);\r\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\r\nclass Sha1 {\r\n constructor() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\r\n this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\r\n this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n this.total_ = 0;\r\n this.blockSize = 512 / 8;\r\n this.pad_[0] = 128;\r\n for (let i = 1; i < this.blockSize; ++i) {\r\n this.pad_[i] = 0;\r\n }\r\n this.reset();\r\n }\r\n reset() {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n }\r\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n compress_(buf, offset) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n const W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (let i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n offset += 4;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (let i = 16; i < 80; i++) {\r\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n let a = this.chain_[0];\r\n let b = this.chain_[1];\r\n let c = this.chain_[2];\r\n let d = this.chain_[3];\r\n let e = this.chain_[4];\r\n let f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (let i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n }\r\n update(bytes, length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (length === undefined) {\r\n length = bytes.length;\r\n }\r\n const lengthMinusBlock = length - this.blockSize;\r\n let n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n const buf = this.buf_;\r\n let inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf === 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += length;\r\n }\r\n /** @override */\r\n digest() {\r\n const digest = [];\r\n let totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (let i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n let n = 0;\r\n for (let i = 0; i < 5; i++) {\r\n for (let j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n }\r\n}\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n const proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nclass ObserverProxy {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n constructor(executor, onNoObservers) {\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(() => {\r\n executor(this);\r\n })\r\n .catch(e => {\r\n this.error(e);\r\n });\r\n }\r\n next(value) {\r\n this.forEachObserver((observer) => {\r\n observer.next(value);\r\n });\r\n }\r\n error(error) {\r\n this.forEachObserver((observer) => {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n }\r\n complete() {\r\n this.forEachObserver((observer) => {\r\n observer.complete();\r\n });\r\n this.close();\r\n }\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\r\n subscribe(nextOrObserver, error, complete) {\r\n let observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error,\r\n complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n try {\r\n if (this.finalError) {\r\n observer.error(this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n }\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n unsubscribeOne(i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n }\r\n forEachObserver(fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (let i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n }\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n sendOne(i, fn) {\r\n // Execute the callback asynchronously\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n if (this.observers !== undefined && this.observers[i] !== undefined) {\r\n try {\r\n fn(this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n close(err) {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n this.observers = undefined;\r\n this.onNoObservers = undefined;\r\n });\r\n }\r\n}\r\n/** Turn synchronous function into one called asynchronously. */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(fn, onError) {\r\n return (...args) => {\r\n Promise.resolve(true)\r\n .then(() => {\r\n fn(...args);\r\n })\r\n .catch((error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (const method of methods) {\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\r\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n let argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n const error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argName The name of the argument\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argName) {\r\n return `${fnName} failed: ${argName} argument `;\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentName, \r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ncallback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentName, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nconst stringToByteArray = function (str) {\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n const high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nconst stringLength = function (str) {\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Copied from https://stackoverflow.com/a/2117523\r\n * Generates a new uuid.\r\n * @public\r\n */\r\nconst uuidv4 = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The amount of milliseconds to exponentially increase.\r\n */\r\nconst DEFAULT_INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nconst DEFAULT_BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n *

Visible for testing\r\n */\r\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n *

Visible for testing\r\n */\r\nconst RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n const randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provide English ordinal letters after a number\r\n */\r\nfunction ordinal(i) {\r\n if (!Number.isFinite(i)) {\r\n return `${i}`;\r\n }\r\n return i + indicator(i);\r\n}\r\nfunction indicator(i) {\r\n i = Math.abs(i);\r\n const cent = i % 100;\r\n if (cent >= 10 && cent <= 20) {\r\n return 'th';\r\n }\r\n const dec = i % 10;\r\n if (dec === 1) {\r\n return 'st';\r\n }\r\n if (dec === 2) {\r\n return 'nd';\r\n }\r\n if (dec === 3) {\r\n return 'rd';\r\n }\r\n return 'th';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getModularInstance(service) {\r\n if (service && service._delegate) {\r\n return service._delegate;\r\n }\r\n else {\r\n return service;\r\n }\r\n}\n\nexport { CONSTANTS, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getDefaultAppConfig, getDefaultEmulatorHost, getDefaultEmulatorHostnameAndPort, getExperimentalSetting, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, ordinal, promiseWithTimeout, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, uuidv4, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","import { PACKAGE_VERSION } from './version.js';\n\n// Name of this application, used in the User-Agent.\nexport const APP_NAME = 'TinodeWeb/' + (PACKAGE_VERSION || '0.17');\n\n// API key. Use https://github.com/tinode/chat/tree/master/keygen to generate your own\nexport const API_KEY = 'AQEAAAABAAD_rAp4DJh05a1HAwFT3A6K';\n\n// The array of possible hosts to connect to.\nexport const KNOWN_HOSTS = {hosted: 'web.tinode.co', local: 'localhost:6060'};\n\n// Default host name and port to connect to.\nexport const DEFAULT_HOST = KNOWN_HOSTS.hosted;\n\n// Enable console logging.\nexport const LOGGING_ENABLED = true;\n\n// Minimum time between two keypress notifications, milliseconds.\nexport const KEYPRESS_DELAY = 3_000;\n// Delay before sending a read notification, milliseconds.\nexport const READ_DELAY = 1_500;\n\n// The default shortest allowed tag length. Matches the value on the server.\nexport const MIN_TAG_LENGTH = 2;\n// The default greatest allowed tag length. Matches the value on the server.\nexport const MAX_TAG_LENGTH = 96;\n// The default maximum number of tags allowed. Matches the value on the server.\nexport const MAX_TAG_COUNT = 16;\n\n// Access mode for P2P subscriptions initiated by the current user.\nexport const DEFAULT_P2P_ACCESS_MODE = 'JRWPS';\n// Access mode for new group topics created by the current user.\nexport const NEW_GRP_ACCESS_MODE = 'JRWPSAO';\n// Access mode for a channel.\nexport const CHANNEL_ACCESS_MODE = 'JR';\n\n// Access mode for no access.\nexport const NO_ACCESS_MODE = 'N';\n\n// Mediaquery breakpoint between desktop and mobile, in px. Should match the value\n// in @media (max-size: 640px) in base.css\nexport const MEDIA_BREAKPOINT = 640;\n// Size of css 'rem' unit in pixels. Default 1rem = 10pt = 13px.\nexport const REM_SIZE = 13;\n\n// Size of the avatar image: when image dimensions are greater or the image is not square, it's resized to\n// a square of this size or less.\nexport const AVATAR_SIZE = 384;\n\n// Maximum size of an avatar in bytes for sending in-band. Bigger avatars will be sent out of band (as uploads).\nexport const MAX_AVATAR_BYTES = 4096;\n\n// Size of the broken_image shown in MessagesView\nexport const BROKEN_IMAGE_SIZE = 32;\n\n// Number of chat messages to fetch in one call.\nexport const MESSAGES_PAGE = 24;\n\n// Default maximum in-band (included directly into the message) attachment size which fits into\n// a message of 256K in size. Used when the server-provided value is unavailable. The actual\n// binary size of the attachment should be smaller due to base64 encoding expansion and some overhead,\n// for instance 1024 bytes.\n// Increase this limit to a greater value in production, if desired. Also increase\n// max_message_size in the server config.\nexport const MAX_INBAND_ATTACHMENT_SIZE = 262_144;\n\n// Default absolute maximum attachment size to be used with the server = 8MB.\n// Used when the server-provided value is unavailable. Increase to something like 100MB in production.\nexport const MAX_EXTERN_ATTACHMENT_SIZE = 1 << 23;\n\n// Maximum allowed linear dimension (pixels) of an image sent inline. Larger images will be shrunk\n// to make the larger dimension fit under this size. You may want to adjust it to 1600 or\n// 2400 for production.\nexport const MAX_IMAGE_DIM = 1024;\n\n// Linear dimensions of image preview: shrink image under this size for previews.\nexport const IMAGE_PREVIEW_DIM = 64;\n\n// Linear dimensions of image thumbnail: shrink image under this size for thumbnails in reply quote previews.\nexport const IMAGE_THUMBNAIL_DIM = 36;\n\n// Maximum number of online users to be shown in a topic title bar. Others will be\n// hidden under \"+X more\"\nexport const MAX_ONLINE_IN_TOPIC = 4;\n\n// Maximum length of user name, topic title, and private comment.\nexport const MAX_TITLE_LENGTH = 60;\n// Maximum length of topic description.\nexport const MAX_TOPIC_DESCRIPTION_LENGTH = 360;\n// Maximum length of user name when displaying a video call.\nexport const MAX_PEER_TITLE_LENGTH = 20;\n\n// Length of message previews in chat list, in characters.\nexport const MESSAGE_PREVIEW_LENGTH = 80;\n\n// Length of a quote in quoted reply (for outgoing messages).\nexport const QUOTED_REPLY_LENGTH = 30;\n// Length of a preview of a forwarded message.\nexport const FORWARDED_PREVIEW_LENGTH = 84;\n\n// Minimum duration of an audio recording in milliseconds (2 sec).\nexport const MIN_DURATION = 2_000;\n// Maximum duration of an audio recording in milliseconds (10 min).\nexport const MAX_DURATION = 600_000;\n\n// Link for \"Contact Us\".\nexport const LINK_CONTACT_US = 'mailto:support@tinode.co';\n\n// Link to Privacy Policy.\nexport const LINK_PRIVACY_POLICY = 'https://tinode.co/privacy.html';\n\n// Link to Terms of Service.\nexport const LINK_TERMS_OF_SERVICE = 'https://tinode.co/terms.html';\n\n","// Video call states.\nexport const CALL_STATE_NONE = 0;\nexport const CALL_STATE_OUTGOING_INITATED = 1;\nexport const CALL_STATE_INCOMING_RECEIVED = 2;\nexport const CALL_STATE_IN_PROGRESS = 3;\n\n// Video call drafty headers representing call state.\nexport const CALL_HEAD_STARTED = 'started';\n","// File and image helper functions.\n\n// Supported image MIME types and corresponding file extensions.\nexport const SUPPORTED_IMAGE_FORMATS = ['image/jpeg', 'image/gif', 'image/png', 'image/svg', 'image/svg+xml'];\nexport const MIME_EXTENSIONS = ['jpg', 'gif', 'png', 'svg', 'svg'];\n\n// Get an URL from a theCard photo: either create a data: URL or return reference URL.\nexport function makeImageUrl(photo) {\n if (photo && typeof photo == 'object') {\n if (photo.ref) {\n return photo.ref\n }\n if (photo.data && photo.type) {\n const mime = photo.type.startsWith('image/') ? photo.type : ('image/' + photo.type);\n return 'data:' + mime + ';base64,' + photo.data;\n }\n }\n return null;\n}\n\n// Calculate linear dimensions for scaling image down to fit under a certain size.\n// Returns an object which contains destination sizes, source sizes, and offsets\n// into source (when making square images).\nexport function fitImageSize(width, height, maxWidth, maxHeight, forceSquare) {\n // Sanitize input\n width = width | 0;\n height = height | 0;\n maxWidth = maxWidth | 0;\n maxHeight = maxHeight | 0;\n\n if (width <= 0 || height <= 0 || maxWidth <= 0 || maxHeight <= 0) {\n return null;\n }\n\n if (forceSquare) {\n maxWidth = maxHeight = Math.min(maxWidth, maxHeight);\n }\n\n const scale = Math.min(\n Math.min(width, maxWidth) / width,\n Math.min(height, maxHeight) / height\n );\n\n const size = {\n dstWidth: (width * scale) | 0,\n dstHeight: (height * scale) | 0,\n };\n\n if (forceSquare) {\n // Also calculate parameters for making the image square.\n size.dstWidth = size.dstHeight = Math.min(size.dstWidth, size.dstHeight);\n size.srcWidth = size.srcHeight = Math.min(width, height);\n size.xoffset = ((width - size.srcWidth) / 2) | 0;\n size.yoffset = ((height - size.srcWidth) / 2) | 0;\n } else {\n size.xoffset = size.yoffset = 0;\n size.srcWidth = width;\n size.srcHeight = height;\n }\n return size;\n}\n\n// Ensure file's extension matches mime content type\nexport function fileNameForMime(fname, mime) {\n const idx = SUPPORTED_IMAGE_FORMATS.indexOf(mime);\n if (idx < 0 || !fname) {\n // Unknown mime or empty name.\n return fname;\n }\n const ext = MIME_EXTENSIONS[idx];\n\n const at = fname.lastIndexOf('.');\n if (at >= 0) {\n fname = fname.substring(0, at);\n }\n return fname + '.' + ext;\n}\n\n// Scale uploaded image to fit under certain dimensions and byte size, optionally constraining to a square.\n// Returns a promise which is resolven on success or rejected on failure.\nexport function imageScaled(fileOrBlob, maxWidth, maxHeight, maxSize, forceSquare) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = function(err) {\n reject(new Error(\"Image format unrecognized\"));\n }\n img.onload = async function() {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n // Calculate the desired image dimensions.\n const dim = fitImageSize(img.width, img.height, maxWidth, maxHeight, forceSquare);\n if (!dim) {\n reject(new Error(\"Invalid image\"));\n return;\n }\n let canvas = document.createElement('canvas');\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(img, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n\n const mime = SUPPORTED_IMAGE_FORMATS.includes(fileOrBlob.type) ? fileOrBlob.type : 'image/jpeg';\n // Generate blob to check size of the image.\n let blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n if (!blob) {\n reject(new Error(\"Unsupported image format\"));\n return;\n }\n // Ensure the image is not too large. Shrink the image keeping the aspect ratio.\n // Do nothing if maxsize is <= 0.\n while (maxSize > 0 && blob.length > maxSize) {\n dim.dstWidth = (dim.dstWidth * 0.70710678118) | 0;\n dim.dstHeight = (dim.dstHeight * 0.70710678118) | 0;\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n ctx = canvas.getContext('2d');\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.drawImage(img, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n }\n\n canvas = null;\n resolve({mime: mime, blob: blob, width: dim.dstWidth, height: dim.dstHeight, name: fileNameForMime(fileOrBlob.name, mime)});\n };\n img.src = URL.createObjectURL(fileOrBlob);\n });\n}\n\n// Scale and crop image according to specified dimensions.\n// The coordinates are in unscaled image pixels, i.e. cut the rectangle first then scale it.\n// returns a promise.\nexport function imageCrop(mime, objURL, left, top, width, height, scale) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = (err) => {\n reject(new Error(\"Image format unrecognized\"));\n };\n img.onload = () => {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n let canvas = document.createElement('canvas');\n canvas.width = width * scale;\n canvas.height = height * scale;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(img, left, top, width, height, 0, 0, canvas.width, canvas.height);\n\n mime = SUPPORTED_IMAGE_FORMATS.includes(mime) ? mime : 'image/jpeg';\n // Generate blob to check size of the image.\n canvas.toBlob((blob) => {\n // Allow GC.\n canvas = null;\n if (blob) {\n resolve({mime: mime, blob: blob, width: width, height: height});\n } else {\n reject(new Error(\"Unsupported image format\"));\n }\n }, mime);\n };\n img.src = objURL;\n });\n}\n\n// Convert file to base64 string.\nexport function fileToBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = (evt) => {\n reject(reader.error);\n };\n reader.onload = () => {\n resolve({mime: file.type, bits: reader.result.split(',')[1], name: file.name});\n };\n reader.readAsDataURL(file);\n });\n}\n\n// Convert Blob to base64 string. Returns a promise resolved with the base64 string and mime.\nexport function blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = _ => {\n reject(reader.error);\n };\n reader.onload = () => {\n resolve({mime: blob.type, bits: reader.result.split(',')[1]});\n };\n reader.readAsDataURL(blob);\n });\n}\n\n// File pasted from the clipboard. It's either an inline image or a file attachment.\nexport function filePasted(event, onImageSuccess, onAttachmentSuccess, onError) {\n const items = (event.clipboardData || event.originalEvent.clipboardData || {}).items;\n if (!items || !items.length) {\n return false;\n }\n\n for (let i in items) {\n const item = items[i];\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (!file) {\n console.error(\"Failed to get file object from pasted file item\", item.kind, item.type);\n onError(\"Failed to get file object from pasted file item\");\n continue;\n }\n if (file.type && file.type.split('/')[0] == 'image') {\n onImageSuccess(file);\n } else {\n onAttachmentSuccess(file);\n }\n // Indicate that the pasted data contains a file.\n return true;\n }\n }\n // No file found.\n return false;\n}\n\n// Get mime type from data URL header.\nexport function getMimeType(header) {\n var mime = /^data:(image\\/[-+a-z0-9.]+);base64/.exec(header);\n return (mime && mime.length > 1) ? mime[1] : null;\n}\n\n// Given length of a binary object in bytes, calculate the length after\n// base64 encoding.\nexport function base64EncodedLen(n) {\n return Math.floor((n + 2) / 3) * 4;\n}\n\n// Given length of a base64-encoded object, calculate decoded size of the\n// pbject in bytes.\nexport function base64DecodedLen(n) {\n return Math.floor(n / 4) * 3;\n}\n\n// Re-encode string to standard base64 encoding with padding.\n// The string may be base64-URL encoded without the padding.\nexport function base64ReEncode(str) {\n if (str) {\n str = str.replace(/-/g, '+').replace(/_/g, '/');\n try {\n str = btoa(atob(str));\n } catch(err) {\n console.error(\"Failed to base64 re-encode string.\", err);\n str = null;\n }\n }\n return str;\n}\n\n// Convert a base64 encoded string with the provided mime type into a Blob.\nexport function base64ToBlob(str, mime) {\n if (!str) {\n return null;\n }\n\n try {\n // Make blob.\n const bin = atob(str);\n const length = bin.length;\n const buf = new ArrayBuffer(length);\n const arr = new Uint8Array(buf);\n for (let i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n\n return new Blob([buf], { type: mime });\n } catch(err) {\n console.error(\"Failed to convert base64 to blob: \", err);\n }\n\n return null;\n}\n\nexport function intArrayToBase64(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n try {\n let bin = '';\n new Uint8Array(arr).forEach(b => bin += String.fromCharCode(b));\n return window.btoa(bin);\n } catch (err) {}\n return null;\n}\n\nexport function base64ToIntArray(b64) {\n const arr = [];\n try {\n const bin = window.atob(b64);\n [...bin].forEach(c => {\n arr.push(c.charCodeAt(0));\n });\n return arr;\n } catch (err) {}\n return null;\n}\n","import React from 'react';\nimport { defineMessages } from 'react-intl';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport AudioPlayer from '../widgets/audio-player.jsx'\nimport CallMessage from '../widgets/call-message.jsx'\nimport CallStatus from '../widgets/call-status.jsx';\nimport LazyImage from '../widgets/lazy-image.jsx'\nimport UploadingImage from '../widgets/uploading-image.jsx'\n\nimport { IMAGE_THUMBNAIL_DIM, BROKEN_IMAGE_SIZE, REM_SIZE } from '../config.js';\nimport { base64ToBlob, blobToBase64, fitImageSize, imageScaled } from './blob-helpers.js';\nimport { idToColorClass, secondsToTime, shortenFileName } from './strformat.js';\nimport { cancelablePromise, sanitizeUrlForMime } from './utils.js';\n\nconst messages = defineMessages({\n drafty_form: {\n id: 'drafty_form',\n defaultMessage: 'Form: ',\n description: 'Comment for form in drafty'\n },\n drafty_attachment: {\n id: 'drafty_attachment',\n defaultMessage: 'Attachment',\n description: 'Comment for attachment in drafty'\n },\n drafty_image: {\n id: 'drafty_image',\n defaultMessage: 'Picture',\n description: 'Comment for embedded images in drafty'\n },\n drafty_unknown: {\n id: 'drafty_unknown',\n defaultMessage: 'Unsupported',\n description: 'Unsupported entity in drafty'\n }\n});\n\n// Additional processing of image data.\nfunction handleImageData(el, data, attr) {\n if (!data) {\n attr.src = 'img/broken_image.png';\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n };\n return el;\n }\n\n attr.className = 'inline-image';\n const dim = fitImageSize(data.width, data.height,\n this.viewportWidth > 0 ? Math.min(this.viewportWidth - REM_SIZE * 6.5, REM_SIZE * 34.5) :\n REM_SIZE * 34.5, REM_SIZE * 24, false) ||\n {dstWidth: BROKEN_IMAGE_SIZE, dstHeight: BROKEN_IMAGE_SIZE};\n attr.style = {\n width: dim.dstWidth + 'px',\n height: dim.dstHeight + 'px',\n // Looks like a Chrome bug: broken image does not respect 'width' and 'height'.\n minWidth: dim.dstWidth + 'px',\n minHeight: dim.dstHeight + 'px'\n };\n if (!Drafty.isProcessing(data)) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'image'));\n attr.alt = data.name;\n if (attr.src) {\n if (Math.max(data.width || 0, data.height || 0) > IMAGE_THUMBNAIL_DIM) {\n // Allow previews for large enough images.\n attr.onClick = this.onImagePreview;\n attr.className += ' image-clickable';\n }\n attr.loading = 'lazy';\n } else {\n attr.src = 'img/broken_image.png';\n }\n } else {\n // Use custom element instead of .\n el = UploadingImage;\n }\n\n return el;\n}\n\n// The main Drafty formatter: converts Drafty elements into React classes. 'this' is set by the caller.\n// 'this' must contain:\n// viewportWidth: this.props.viewportWidth;\n// authorizeURL: this.props.tinode.authorizeURL\n// onImagePreview: this.handleImagePreview\n// onFormButtonClick: this.handleFormButtonClick\n// onQuoteClick: this.handleQuoteClick (optional)\nexport function fullFormatter(style, data, values, key, stack) {\n if (stack.includes('QQ')) {\n return quoteFormatter.call(this, style, data, values, key);\n }\n\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch (style) {\n case 'AU':\n // Show audio player.\n if (attr.src) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'audio'));\n attr.duration = data.duration > 0 ? (data.duration | 0) : undefined;\n attr.preview = data.preview;\n attr.loading = 'lazy';\n }\n el = AudioPlayer;\n // Audio element cannot have content.\n values = null;\n break;\n case 'BR':\n values = null;\n break;\n case 'EX':\n // Ignore.\n break;\n case 'HL':\n // Highlighted text. Assign class name.\n attr.className = 'highlight';\n break;\n case 'HD':\n el = null;\n values = null;\n break;\n case 'IM':\n // Additional processing for images\n el = handleImageData.call(this, el, data, attr);\n // Image element cannot have content.\n values = null;\n break;\n case 'BN':\n // Button\n attr.onClick = this.onFormButtonClick;\n let inner = React.Children.map(values, (child) => {\n return typeof child == 'string' ? child : undefined;\n });\n if (!inner || inner.length == 0) {\n inner = [attr.name]\n }\n // Get text which will be sent back when the button is clicked.\n attr['data-title'] = inner.join('');\n break;\n case 'MN':\n // Mention\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'FM':\n // Form\n attr.className = 'bot-form';\n break;\n case 'RW':\n // Form element formatting is dependent on element content.\n break;\n case 'QQ':\n // Quote/citation.\n attr.className = 'reply-quote'\n attr.onClick = this.onQuoteClick;\n break;\n case 'VC':\n el = CallMessage;\n // Video call messages do not have content.\n values = null;\n if (data) {\n attr.callState = data.state;\n attr.incoming = data.incoming;\n attr.duration = data.duration;\n }\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n attr = {key: key};\n // Generate comment for unknown element.\n let body = values;\n if (!Array.isArray(values) || !values.join('').trim()) {\n body = [{this.formatMessage(messages.drafty_unknown)}];\n }\n values = [extension, ' '].concat(body);\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n}\n\n// Converts Drafty object into a one-line preview. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\nexport function previewFormatter(style, data, values, key) {\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n const attr = { key: key };\n switch (style) {\n case 'AU':\n // Voicemail as '[mic] 0:00'.\n el = React.Fragment;\n values = [mic, ' ', secondsToTime(data.duration/1000)];\n break;\n case 'BR':\n // Replace new line with a space.\n el = React.Fragment;\n values = [' '];\n break;\n case 'HL':\n // Make highlight less prominent in preview.\n attr.className = 'highlight preview';\n break;\n case 'LN':\n case 'MN':\n // Disable links in previews.\n el = 'span';\n break;\n case 'IM':\n // Replace image with '[icon] Image'.\n el = React.Fragment;\n values = [photo, ' ', this.formatMessage(messages.drafty_image)];\n break;\n case 'BN':\n el = 'span';\n attr.className = 'flat-button faux';\n break;\n case 'FM':\n el = React.Fragment;\n values = [dashboard,\n this.formatMessage(messages.drafty_form)].concat(' ', values || []);\n break;\n case 'RW':\n el = React.Fragment;\n break;\n case 'EX':\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment, ' ', this.formatMessage(messages.drafty_attachment)];\n break;\n case 'VC':\n el = CallStatus;\n if (data) {\n attr.callState = data.state;\n attr.incoming = data.incoming;\n attr.duration = data.duration;\n }\n values = null;\n break;\n case 'QQ':\n case 'HD':\n el = null;\n values = null;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n values = [extension, ' ', this.formatMessage(messages.drafty_unknown)];\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n};\n\n// Converts Drafty object into a quoted reply. 'this' is set by the caller.\nfunction inlineImageAttr(attr, data) {\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n maxWidth: IMAGE_THUMBNAIL_DIM + 'px',\n maxHeight: IMAGE_THUMBNAIL_DIM + 'px',\n }\n attr.className = 'inline-image';\n attr.alt = this.formatMessage(messages.drafty_image);\n if (!data) {\n attr.src = 'img/broken_image.png';\n }\n attr.title = attr.alt;\n return attr;\n}\n\n// Displays a portion of Drafty within 'QQ' quotes. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\n// authorizeURL: this.props.tinode.authorizeURL\n// onQuoteClick: this.handleQuoteClick (optional)\nfunction quoteFormatter(style, data, values, key) {\n if (['BR', 'EX', 'IM', 'MN'].includes(style)) {\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch(style) {\n case 'BR':\n values = null;\n break;\n case 'IM':\n attr = inlineImageAttr.call(this, attr, data);\n values = [React.createElement('img', attr, null), ' ', attr.alt];\n el = React.Fragment;\n // Fragment attributes.\n attr = {key: key};\n break;\n case 'MN':\n el = 'span';\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'EX':\n let fname;\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n fname = data.name;\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment,\n shortenFileName(fname, 16) || this.formatMessage(messages.drafty_attachment)];\n break;\n }\n return React.createElement(el, attr, values);\n }\n return previewFormatter.call(this, style, data, values, key);\n}\n\n// Create image thumbnail suitable for inclusion in a quote.\nfunction quoteImage(data) {\n let promise;\n // Get the blob from the image data.\n if (data.val) {\n const blob = base64ToBlob(data.val, data.mime);\n if (!blob) {\n throw new Error(\"Invalid image\");\n }\n promise = Promise.resolve(blob);\n } else if (data.ref) {\n promise = fetch(this.authorizeURL(sanitizeUrlForMime(data.ref, 'image')))\n .then(evt => {\n if (evt.ok) {\n return evt.blob();\n } else {\n throw new Error(`Image fetch unsuccessful: ${evt.status} ${evt.statusText}`);\n }\n });\n } else {\n throw new Error(\"Missing image data\");\n }\n\n // Scale the blob.\n return promise\n .then(blob => {\n // Cut the square from the center of the image and shrink it.\n return imageScaled(blob, IMAGE_THUMBNAIL_DIM, IMAGE_THUMBNAIL_DIM, -1, true)\n }).then(scaled => {\n data.mime = scaled.mime;\n data.size = scaled.blob.size;\n data.width = scaled.width;\n data.height = scaled.height;\n delete data.ref;\n // Keeping the original file name, if provided: ex.data.name;\n\n data.src = URL.createObjectURL(scaled.blob);\n return blobToBase64(scaled.blob);\n }).then(b64 => {\n data.val = b64.bits;\n return data;\n }).catch(err => {\n delete data.val;\n delete data.src;\n data.width = IMAGE_THUMBNAIL_DIM;\n data.height = IMAGE_THUMBNAIL_DIM;\n // Rethrow.\n throw err;\n });\n}\n\n// Create a preview of a reply.\nexport function replyFormatter(style, data, values, key, stack) {\n if (style == 'IM') {\n const attr = inlineImageAttr.call(this, {key: key}, data);\n let loadedPromise;\n try {\n loadedPromise = cancelablePromise(quoteImage.call(this, data));\n } catch (error) {\n loadedPromise = cancelablePromise(error);\n }\n attr.whenDone = loadedPromise;\n values = [React.createElement(LazyImage, attr, null), ' ', attr.alt];\n return React.createElement(React.Fragment, {key: key}, values);\n } else if (style == 'QQ') {\n if (stack.includes('QQ')) {\n // Quote inside quote when forwarding a message.\n return React.createElement('span', {key: key},\n [format_quote, ' ']);\n }\n\n const attr = Drafty.attrValue('QQ', data) || {};\n attr.key = key;\n attr.className = 'reply-quote'\n return React.createElement(Drafty.tagName('QQ'), attr, values);\n }\n return quoteFormatter.call(this, style, data, values, key);\n}\n","import { KNOWN_HOSTS, DEFAULT_HOST } from '../config.js';\n\n// Detect server address from the URL\nexport function detectServerAddress() {\n let host = DEFAULT_HOST;\n if (typeof window.location == 'object') {\n if (window.location.protocol == 'file:' || window.location.hostname == 'localhost') {\n host = KNOWN_HOSTS.local;\n } else if (window.location.hostname) {\n host = window.location.hostname + (window.location.port ? ':' + window.location.port : '');\n }\n }\n return host;\n}\n\n// Detect if the page is served over HTTPS.\nexport function isSecureConnection() {\n if (typeof window.location == 'object') {\n return window.location.protocol == 'https:';\n }\n return false;\n}\n\nexport function isLocalHost() {\n if (typeof window.location == 'object') {\n return window.location.hostname == 'localhost';\n }\n return false;\n}\n","// Helper functions for storing values in localStorage.\n// By default localStorage can store only strings, not objects or other types.\n\nexport default class LocalStorageUtil {\n // Replace old object with the new one.\n static setObject(key, value) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n // Get stored object.\n static getObject(key) {\n const value = localStorage.getItem(key);\n return value && JSON.parse(value);\n }\n\n // Partially or wholly update stored object.\n static updateObject(key, value) {\n const oldVal = this.getObject(key);\n this.setObject(key, Object.assign(oldVal || {}, value));\n }\n\n // Just a wrapper.\n static removeItem(key) {\n localStorage.removeItem(key);\n }\n}\n","// Utility class for hash navigation.\n\nexport default class HashNavigation {\n // Parse hash as in http://www.example.com/path#hash as if it were\n // path and arguments.\n static parseUrlHash(hash) {\n // Split path from args, path -> parts[0], args->path[1]\n const parts = hash.split('?', 2);\n const params = {};\n let path = [];\n if (parts[0]) {\n path = parts[0].replace('#', '').split('/');\n }\n if (parts[1]) {\n parts[1].split('&').forEach((arg) => {\n // Can't use split() because the value may contain '='.\n const eq = arg.indexOf('=');\n if (eq > 0) {\n params[arg.slice(0, eq)] = decodeURIComponent(arg.slice(eq + 1));\n }\n });\n }\n return {path: path, params: params};\n }\n\n static navigateTo(url) {\n window.location.hash = url;\n }\n\n static composeUrlHash(path, params) {\n let url = path.join('/');\n const args = [];\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n args.push(key + '=' + encodeURIComponent(params[key]));\n }\n }\n if (args.length > 0) {\n url += '?' + args.join('&');\n }\n return url;\n }\n\n static addUrlParam(hash, key, value) {\n const parsed = HashNavigation.parseUrlHash(hash);\n parsed.params[key] = value;\n return HashNavigation.composeUrlHash(parsed.path, parsed.params);\n }\n\n static removeUrlParam(hash, key) {\n const parsed = HashNavigation.parseUrlHash(hash);\n delete parsed.params[key];\n return HashNavigation.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlSidePanel(hash, sidepanel) {\n const parsed = HashNavigation.parseUrlHash(hash);\n parsed.path[0] = sidepanel;\n return HashNavigation.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlInfoPanel(hash, infopanel) {\n const parsed = HashNavigation.parseUrlHash(hash);\n if (infopanel) {\n parsed.params.info = infopanel;\n } else {\n delete parsed.params.info;\n }\n return HashNavigation.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlTopic(hash, topic) {\n const parsed = HashNavigation.parseUrlHash(hash);\n parsed.path[1] = topic;\n // Close InfoView on topic change.\n delete parsed.params.info;\n return HashNavigation.composeUrlHash(parsed.path, parsed.params);\n }\n}\n","// Short representation of time in the past.\nexport function shortDateFormat(then, locale) {\n locale = locale || window.navigator.userLanguage || window.navigator.language;\n const now = new Date();\n if (then.getFullYear() == now.getFullYear()) {\n // Same year.\n if (then.getMonth() == now.getMonth() && then.getDate() == now.getDate()) {\n // Same month and day, show time only.\n return then.toLocaleTimeString(locale, {hour12: false, hour: '2-digit', minute: '2-digit'});\n }\n // Different month and/or day, show month day, time.\n return then.toLocaleDateString(locale,\n {hour12: false, month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit'});\n }\n // Different year: just show the date.\n return then.toLocaleDateString(locale, {year: 'numeric', month: 'short', day: 'numeric'});\n}\n\n// Convert seconds to [hours:]minutes:seconds, i.e. 156 sec -> 2:36, 3756 sec -> 1:02:36.\n// If fixedMins is true, then minutes are represented by at least two digits.\nexport function secondsToTime(seconds, fixedMin) {\n let min = Math.floor(seconds / 60) | 0;\n let hours = Math.floor(min / 60) | 0;\n\n if (fixedMin || hours > 0) {\n min = min < 10 ? `0${min}` : min;\n }\n let sec = (seconds % 60) | 0;\n sec = sec < 10 ? `0${sec}` : sec;\n if (hours == 0) {\n return `${min}:${sec}`;\n }\n return `${hours}:${min}:${sec}`;\n}\n\n// Convert a number of bytes to human-readable format.\nexport function bytesToHumanSize(bytes) {\n if (!bytes || bytes == 0) {\n return '0 Bytes';\n }\n\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const bucket = Math.min(Math.floor(Math.log2(bytes) / 10) | 0, sizes.length-1);\n const count = bytes / Math.pow(1024, bucket);\n const round = bucket > 0 ? (count < 3 ? 2 : (count < 30 ? 1 : 0)) : 0;\n return count.toFixed(round) + ' ' + sizes[bucket];\n}\n\n// Shorten a file name to be under maxLength by clipping out the middle.\nexport function shortenFileName(filename, maxLength) {\n if (typeof filename != 'string') {\n return filename;\n }\n return filename.length > maxLength ?\n filename.slice(0, maxLength/2 - 1) + '…' + filename.slice(1 - maxLength/2) : filename;\n}\n\n// Get 32 bit integer hash value for a string. Ideally it should produce the same value\n// as Java's String#hash().\nfunction stringToColorHash(value) {\n let hash = 0;\n value = '' + value;\n for (let i = 0; i < value.length; i++) {\n hash = ((hash << 5) - hash) + value.charCodeAt(i);\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n}\n\n// User avatar letter color id.\nexport function letterTileColorId(userId) {\n return Math.abs(stringToColorHash(userId)) % 16;\n}\n\n// Converts user or topic ID to a CSS color class. Ideally it should produce the same color value as Java version.\n// params:\n// - {string} id: user or topic ID\n// - {boolean} light: light or dark version of the color.\n// - {boolean} fg: foreground (text) or background color.\nexport function idToColorClass(id, light, fg) {\n return (light ? 'lt-' : 'dk-') + (fg ? 'fg-' : 'bg-') + letterTileColorId(id);\n}\n","// Odds and ends\n\nimport { Tinode } from 'tinode-sdk';\n\n// Make shortcut icon appear with a green dot + show unread count in title.\nexport function updateFavicon(count) {\n const oldIcon = document.getElementById('shortcut-icon');\n const head = document.head || document.getElementsByTagName('head')[0];\n const newIcon = document.createElement('link');\n newIcon.type = 'image/png';\n newIcon.id = 'shortcut-icon';\n newIcon.rel = 'shortcut icon';\n newIcon.href = 'img/logo32x32' + (count > 0 ? 'a' : '') + '.png';\n if (oldIcon) {\n head.removeChild(oldIcon);\n }\n head.appendChild(newIcon);\n\n document.title = (count > 0 ? '('+count+') ' : '') + 'Tinode';\n}\n\n// Create theCard which represents user's or topic's \"public\" info.\nexport function theCard(fn, imageUrl, imageMimeType, note) {\n let card = null;\n fn = fn && fn.trim();\n note = note && note.trim();\n\n if (fn) {\n card = {\n fn: fn\n };\n }\n\n if (typeof note == 'string') {\n card = card || {};\n card.note = note ? note : Tinode.DEL_CHAR;\n }\n\n if (imageUrl) {\n card = card || {};\n let mimeType = imageMimeType;\n // Is this a data URL \"data:[][;base64],\"?\n const matches = /^data:(image\\/[-a-z0-9+.]+)?(;base64)?,/i.exec(imageUrl);\n if (matches) {\n mimeType = matches[1];\n card.photo = {\n data: imageUrl.substring(imageUrl.indexOf(',') + 1),\n ref: Tinode.DEL_CHAR\n };\n } else {\n card.photo = {\n data: Tinode.DEL_CHAR,\n ref: imageUrl\n };\n }\n card.photo.type = (mimeType || 'image/jpeg').substring('image/'.length);\n }\n\n return card;\n}\n\n// Deep-shallow compare two arrays: shallow compare each element.\nexport function arrayEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (!Array.isArray(a) || !Array.isArray(b)) {\n return false;\n }\n\n // Compare lengths first.\n if (a.length != b.length) {\n return false;\n }\n // Order of elements is ignored.\n a.sort();\n b.sort();\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\n// Checks (loosely) if the given string is a phone. If so, returns the phone number in a format\n// as close to E.164 as possible.\nexport function asPhone(val) {\n val = val.trim();\n if (/^(?:\\+?(\\d{1,3}))?[- (.]*(\\d{3})[- ).]*(\\d{3})[- .]*(\\d{2})[- .]*(\\d{2})?$/.test(val)) {\n return val.replace(/[- ().]*/, '');\n }\n return null;\n}\n\n// Checks (loosely) if the given string is an email. If so returns the email.\nexport function asEmail(val) {\n val = val.trim();\n if (/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(val)) {\n return val;\n }\n return null;\n}\n\n// Checks if URL is a relative url, i.e. has no 'scheme://', including the case of missing scheme '//'.\n// The scheme is expected to be RFC-compliant, e.g. [a-z][a-z0-9+.-]*\n// example.html - ok\n// https:example.com - not ok.\n// http:/example.com - not ok.\n// ' ↲ https://example.com' - not ok. (↲ means carriage return)\nexport function isUrlRelative(url) {\n return url && !/^\\s*([a-z][a-z0-9+.-]*:|\\/\\/)/im.test(url);\n}\n\n// Ensure URL does not present an XSS risk. Optional allowedSchemes may contain an array of\n// strings with permitted URL schemes, such as ['ftp', 'ftps']; otherwise accept http and https only.\nexport function sanitizeUrl(url, allowedSchemes) {\n if (typeof url != 'string') {\n return url;\n }\n\n // Strip control characters and whitespace. They are not valid URL characters anyway.\n url = url.replace(/[^\\x20-\\x7E]/gmi, '').trim();\n\n // Relative URLs are safe.\n // Relative URL does not start with ':', abcd123: or '//'.\n if (!/^([a-z][a-z0-9+.-]*:|\\/\\/)/i.test(url)) {\n return url;\n }\n\n // Blob URLs are safe.\n if (/^blob:http/.test(url)) {\n return url;\n }\n\n // Absolute URL. Accept only safe schemes, or no scheme.\n const schemes = Array.isArray(allowedSchemes) ? allowedSchemes.join('|') : 'http|https';\n const re = new RegExp('^((' + schemes + '):|//)', 'i');\n if (!re.test(url)) {\n return null;\n }\n\n return url;\n}\n\n// Ensure URL is suitable as a source like field: the URL must be a relative URL or\n// have http:, https:, blob: or data: scheme.\n// In case of data: scheme, the URL must must be of the right MIME type such as 'data:{mimeMajor}/XXXX;base64,'.\nexport function sanitizeUrlForMime(url, mimeMajor) {\n if (!url) {\n return null;\n }\n\n const sanitizedUrl = sanitizeUrl(url);\n if (sanitizedUrl) {\n return sanitizedUrl;\n }\n\n // Is this a data: URL of the appropriate mime type?\n const re = new RegExp(`data:${mimeMajor}\\/[a-z0-9.-]+;base64,`, 'i');\n if (re.test(url.trim())) {\n return url;\n }\n\n return null;\n}\n\n// Given message's received status, return name and color of a delivery indicator icon.\nexport function deliveryMarker(received) {\n switch (received) {\n case Tinode.MESSAGE_STATUS_SENDING:\n return { name: 'access_time' }; // watch face\n case Tinode.MESSAGE_STATUS_FAILED:\n return { name: 'warning', color: 'danger-color' }; // yellow icon /!\\\n case Tinode.MESSAGE_STATUS_SENT:\n return { name: 'done' }; // checkmark\n case Tinode.MESSAGE_STATUS_RECEIVED:\n return { name: 'done_all' }; // double checkmark\n case Tinode.MESSAGE_STATUS_READ:\n return { name: 'done_all', color: 'blue' }; // blue double checkmark\n }\n return null;\n}\n\n// Wraps a promise to make it cancelable.\n// The parameter can be either a promise or an error. If it's an error, the wrapped promise is\n// created in a rejected state.\nexport function cancelablePromise(promise) {\n let hasCanceled = false;\n\n const wrappedPromise = promise instanceof Error ?\n Promise.reject(promise) :\n new Promise((resolve, reject) => {\n promise.then(\n result => hasCanceled ? reject({isCanceled: true}) : resolve(result),\n error => hasCanceled ? reject({isCanceled: true}) : reject(error)\n );\n });\n\n return {\n promise: wrappedPromise,\n cancel() {\n hasCanceled = true;\n },\n };\n};\n\n// Clips string to the specified length.\nexport function clipStr(str, length) {\n return str && str.substring(0, length);\n}\n","// This is a generated file. Don't edit.\n\nexport const PACKAGE_VERSION = \"0.20.2\";\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport CheckBox from '../widgets/checkbox.jsx';\n\nexport default class EditAccountView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCheckboxClick = this.handleCheckboxClick.bind(this);\n }\n\n handleCheckboxClick(what, checked) {\n if (what == 'sound') {\n this.props.onToggleMessageSounds(checked);\n } else if (what == 'alert') {\n this.props.onTogglePushNotifications(checked);\n } else if (what == 'incognito') {\n this.props.onToggleIncognitoMode(checked);\n }\n }\n\n render() {\n return (\n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n );\n }\n};\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport InPlaceEdit from '../widgets/in-place-edit.jsx';\nimport PermissionsEditor from '../widgets/permissions-editor.jsx';\n\nconst messages = defineMessages({\n delete_account: {\n id: 'delete_account',\n defaultMessage: 'Delete account',\n description: 'Title for delete account warning'\n },\n delete_account_warning: {\n id: 'delete_account_warning',\n defaultMessage: 'Are you sure you want to delete your account? It cannot be undone.',\n description: 'Warning message when deleting an account'\n }\n});\n\nclass AccSecurityView extends React.Component {\n constructor(props) {\n super(props);\n\n const me = this.props.tinode.getMeTopic();\n let blockedCount = 0;\n me.contacts((c) => {\n if (c.acs && !c.acs.isJoiner()) {\n blockedCount ++;\n }\n });\n const defacs = me.getDefaultAccess();\n this.state = {\n auth: defacs ? defacs.auth : null,\n anon: defacs ? defacs.anon : null,\n showPermissionEditorFor: undefined,\n blockedCount: blockedCount,\n };\n\n this.handlePasswordUpdate = this.handlePasswordUpdate.bind(this);\n this.handleLaunchPermissionsEditor = this.handleLaunchPermissionsEditor.bind(this);\n this.handleHidePermissionsEditor = this.handleHidePermissionsEditor.bind(this);\n this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);\n this.handleDeleteAccount = this.handleDeleteAccount.bind(this);\n }\n\n handlePasswordUpdate(pwd) {\n this.setState({password: pwd});\n this.props.onUpdatePassword(pwd);\n }\n\n handleLaunchPermissionsEditor(which) {\n this.setState({\n showPermissionEditorFor: which,\n editedPermissions: this.state[which]\n });\n }\n\n handleHidePermissionsEditor() {\n this.setState({showPermissionEditorFor: undefined});\n }\n\n handlePermissionsChanged(perm) {\n let defacs = {};\n defacs[this.state.showPermissionEditorFor] = perm;\n this.props.onUpdateAccountDesc('me', undefined, undefined, defacs);\n\n let newState = {showPermissionEditorFor: undefined};\n newState[this.state.showPermissionEditorFor] = perm;\n this.setState(newState);\n }\n\n handleDeleteAccount(e) {\n e.preventDefault();\n const {formatMessage} = this.props.intl;\n this.props.onShowAlert(\n formatMessage(messages.delete_account), // title\n formatMessage(messages.delete_account_warning), // content\n (() => { this.props.onDeleteAccount(); }), // onConfirm\n null, // use default text \"OK\"\n true, // Show Reject button\n null // use default text \"Cancel\"\n );\n }\n\n render() {\n return (\n <>{this.state.showPermissionEditorFor ?\n \n :\n
\n
\n \n
\n {\n (password_unchanged) => \n }\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
Auth: {this.state.auth}
\n
Anon: {this.state.anon}
\n
\n
\n {this.state.blockedCount > 0 ?\n <>\n \n }\n );\n }\n};\n\nexport default injectIntl(AccSecurityView);\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport { APP_NAME, LINK_CONTACT_US, LINK_PRIVACY_POLICY, LINK_TERMS_OF_SERVICE } from '../config.js';\n\nexport default class AccSupportView extends React.PureComponent {\n render() {\n return (\n
\n \n
\n
\n
\n \n {APP_NAME}\n
\n
\n \n {Tinode.getLibrary()}\n
\n
\n \n {this.props.serverVersion}\n
\n
\n \n {this.props.serverAddress}\n
\n
\n
\n );\n }\n};\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport AvatarUpload from '../widgets/avatar-upload.jsx';\nimport BadgeList from '../widgets/badge-list.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\nimport { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH } from '../config.js';\n\nfunction _clip(str, length) {\n return str && str.substring(0, length);\n}\n\nexport default class AccountSettingsView extends React.Component {\n constructor(props) {\n super(props);\n\n const me = this.props.tinode.getMeTopic();\n this.state = {\n fullName: _clip(me.public ? me.public.fn : undefined, MAX_TITLE_LENGTH),\n description: _clip(me.public ? me.public.note : undefined, MAX_TOPIC_DESCRIPTION_LENGTH),\n avatar: makeImageUrl(me.public ? me.public.photo : null)\n };\n }\n\n render() {\n return (\n
\n
\n {e.preventDefault(); this.props.onNavigate('general');}}>\n edit \n \n \n
\n \n
\n
\n \n
{this.state.fullName}
\n
\n
\n  \n {this.props.myUserId}\n
\n
\n \n
\n {this.state.description ?\n
\n \n
{this.state.description}
\n
: null}\n
\n \n );\n }\n};\n","/* ContactsView holds all contacts-related stuff */\nimport React from 'react';\nimport { FormattedMessage, defineMessages } from 'react-intl';\n\nimport ContactList from '../widgets/contact-list.jsx';\n\nimport { updateFavicon } from '../lib/utils.js';\n\nconst messages = defineMessages({\n archived_contacts_title: {\n id: \"archived_contacts\",\n defaultMessage: \"Archived contacts ({count})\",\n description: \"Label for archived chats\"\n }\n});\n\nexport default class ContactsView extends React.Component {\n constructor(props) {\n super(props);\n\n this.handleAction = this.handleAction.bind(this);\n\n this.state = ContactsView.deriveStateFromProps(props);\n }\n\n static deriveStateFromProps(props) {\n const contacts = [];\n let unreadThreads = 0;\n let archivedCount = 0;\n props.chatList.map((c) => {\n const blocked = c.acs && !c.acs.isJoiner();\n // Show only blocked contacts only when props.blocked == true.\n if (blocked && props.blocked) {\n contacts.push(c);\n }\n if (blocked || props.blocked) {\n return;\n }\n\n if (c.private && c.private.arch) {\n if (props.archive) {\n contacts.push(c);\n } else {\n archivedCount ++;\n }\n } else if (!props.archive) {\n contacts.push(c);\n unreadThreads += c.unread > 0 ? 1 : 0;\n }\n });\n\n contacts.sort((a, b) => {\n return (b.touched || 0) - (a.touched || 0);\n });\n\n if (archivedCount > 0) {\n contacts.push({\n action: 'archive',\n title: messages.archived_contacts_title,\n values: {count: archivedCount}\n });\n }\n\n return {\n contactList: contacts,\n unreadThreads: unreadThreads\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.chatList != this.props.chatList ||\n prevProps.archive != this.props.archive ||\n prevProps.blocked != this.props.blocked) {\n const newState = ContactsView.deriveStateFromProps(this.props);\n this.setState(newState);\n if (newState.unreadThreads != prevState.unreadThreads) {\n updateFavicon(newState.unreadThreads);\n }\n }\n }\n\n handleAction(action_ignored) {\n this.props.onShowArchive();\n }\n\n render() {\n return (\n ¯∖_(ツ)_/¯\"\n description=\"HTML message shown in ContactList when no contacts are found\">{\n (no_contacts) => \n }\n );\n }\n};\n","// Account registration.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport AvatarCrop from '../widgets/avatar-crop.jsx';\nimport AvatarUpload from '../widgets/avatar-upload.jsx';\nimport CheckBox from '../widgets/checkbox.jsx';\nimport VisiblePassword from '../widgets/visible-password.jsx';\n\nimport LocalStorageUtil from '../lib/local-storage.js';\nimport { imageScaled, blobToBase64, makeImageUrl } from '../lib/blob-helpers.js';\nimport { theCard } from '../lib/utils.js';\n\nimport { AVATAR_SIZE, MAX_AVATAR_BYTES, MAX_EXTERN_ATTACHMENT_SIZE,\n MAX_TITLE_LENGTH } from '../config.js';\n\nexport default class CreateAccountView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n login: '',\n password: '',\n email: '',\n fn: '', // full/formatted name\n imageUrl: null,\n uploadUrl: null,\n newAvatar: null,\n newAvatarMime: null,\n errorCleared: false,\n buttonDisabled: false,\n saveToken: LocalStorageUtil.getObject('keep-logged-in')\n };\n\n this.handleLoginChange = this.handleLoginChange.bind(this);\n this.handlePasswordChange = this.handlePasswordChange.bind(this);\n this.handleEmailChange = this.handleEmailChange.bind(this);\n this.handleFnChange = this.handleFnChange.bind(this);\n this.handleImageChanged = this.handleImageChanged.bind(this);\n this.handleToggleSaveToken = this.handleToggleSaveToken.bind(this);\n this.handleAvatarCropped = this.handleAvatarCropped.bind(this);\n this.handleAvatarCropCancel = this.handleAvatarCropCancel.bind(this);\n this.uploadAvatar = this.uploadAvatar.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n handleLoginChange(e) {\n this.setState({login: e.target.value});\n }\n\n handlePasswordChange(password) {\n this.setState({password: password});\n }\n\n handleEmailChange(e) {\n this.setState({email: e.target.value})\n }\n\n handleFnChange(e) {\n this.setState({fn: e.target.value});\n }\n\n handleImageChanged(mime, img) {\n this.setState({newAvatar: img, newAvatarMime: mime});\n }\n\n handleToggleSaveToken() {\n LocalStorageUtil.setObject('keep-logged-in', !this.state.saveToken);\n this.setState({saveToken: !this.state.saveToken});\n }\n\n handleSubmit(e) {\n e.preventDefault();\n this.setState({errorCleared: false});\n this.props.onCreateAccount(\n this.state.login.trim(),\n this.state.password.trim(),\n theCard(this.state.fn.trim().substring(0, MAX_TITLE_LENGTH), this.state.uploadUrl),\n {'meth': 'email', 'val': this.state.email});\n }\n\n // AvatarCropView calls this method when the user has cropped the image.\n handleAvatarCropped(mime, blob, width, height) {\n const url = blob ? URL.createObjectURL(blob) : null;\n this.setState({avatar: url, newAvatar: null, newAvatarMime: null});\n if (blob) {\n this.uploadAvatar(mime, blob, width, height);\n }\n }\n\n handleAvatarCropCancel() {\n this.setState({newAvatar: null, newAvatarMime: null});\n }\n\n // Utility method for converting cropped avatar blob to bytes for sending inband or\n // for uploading it to the server out of band.\n uploadAvatar(mime, blob, width, height) {\n const readyToUpload = image => {\n let {mime, blob} = image;\n this.setState({imageUrl: URL.createObjectURL(blob), buttonDisabled: true});\n if (blob.size > MAX_AVATAR_BYTES) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n uploader.upload(blob, 'newacc')\n .then(url => this.setState({uploadUrl: url}))\n .catch(err => this.props.onError(err.message, 'err'))\n .finally(_ => this.setState({buttonDisabled: false}));\n } else {\n // Convert blob to base64-encoded bits.\n blobToBase64(blob)\n .then(b64 => this.setState({uploadUrl: makeImageUrl({data: b64.bits, type: mime})}))\n .finally(_ => this.setState({buttonDisabled: false}));\n }\n };\n\n if (width > AVATAR_SIZE || height > AVATAR_SIZE || width != height) {\n // Avatar is not square or too large even after cropping. Shrink it and make square.\n imageScaled(blob, AVATAR_SIZE, AVATAR_SIZE, MAX_EXTERN_ATTACHMENT_SIZE, true)\n .then(scaled => readyToUpload(scaled))\n .catch(err => this.props.onError(err.message, 'err'));\n } else {\n readyToUpload({mime: mime, blob: blob, width: width, height: height});\n }\n }\n\n render() {\n if (this.state.newAvatar) {\n return (\n \n );\n }\n\n let submitClasses = 'primary';\n if (this.props.disabled) {\n submitClasses += ' disabled';\n }\n\n return (\n
\n
\n
\n {\n (login_prompt) => \n }\n {\n (password_prompt) => \n }\n
\n \n
\n
\n {\n (full_name_prompt) => \n }\n
\n
\n {\n (email_prompt) => \n }\n
\n
\n \n {\n (stay_logged_in) => \n }\n
\n
\n \n
\n
\n );\n }\n};\n","// InfoView: panel with topic/user info.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { AccessMode, Tinode } from 'tinode-sdk';\n\nimport AvatarUpload from '../widgets/avatar-upload.jsx';\nimport BadgeList from '../widgets/badge-list.jsx';\nimport CheckBox from '../widgets/checkbox.jsx';\nimport ContactList from '../widgets/contact-list.jsx';\nimport ErrorPanel from '../widgets/error-panel.jsx';\nimport GroupManager from '../widgets/group-manager.jsx';\nimport MenuCancel from '../widgets/menu-cancel.jsx';\nimport PermissionsEditor from '../widgets/permissions-editor.jsx';\nimport TopicCommon from '../widgets/topic-common.jsx';\nimport TopicSecurity from '../widgets/topic-security.jsx';\n\nimport { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH, NO_ACCESS_MODE } from '../config.js';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\nimport { theCard, clipStr } from '../lib/utils.js';\n\nconst messages = defineMessages({\n info: {\n id: 'panel_title_info',\n description: 'Title for InfoView',\n defaultMessage: 'Info'\n },\n general: {\n id: 'panel_title_general',\n description: 'Title for TopicCommon.',\n defaultMessage: 'General'\n },\n security: {\n id: 'panel_title_security',\n description: 'Title for TopicSecirity and AccSecurity.',\n defaultMessage: 'Security'\n },\n members: {\n id: 'panel_title_members',\n description: 'Title for managing group members view.',\n defaultMessage: 'Members'\n },\n crop: {\n id: 'panel_title_crop',\n description: 'Title for AvatarCropView.',\n defaultMessage: 'Drag to Adjust'\n },\n perm_want: {\n id: 'requested_permissions',\n defaultMessage: 'Requested',\n description: 'Title for permissions'\n },\n perm_given: {\n id: 'granted_permissions',\n defaultMessage: 'Granted',\n description: 'Title for permissions'\n },\n perm_auth: {\n id: 'permissions_authenticated',\n defaultMessage: 'Authenticated',\n description: 'Title for editing default authenticated permissions'\n },\n perm_anon: {\n id: 'permissions_anonymous',\n defaultMessage: 'Anonymous',\n description: 'Title for editing default anonymous permissions'\n },\n perm_user: {\n id: 'permissions_user',\n defaultMessage: 'User\\'s Permissions',\n description: 'Title for editing user\\'s permissions'\n },\n edit_permissions: {\n id: 'menu_item_edit_permissions',\n defaultMessage: 'Edit permissions',\n description: 'Menu item [Edit permissions]'\n },\n});\n\nclass InfoView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n topic: null,\n owner: false,\n admin: false,\n sharer: false,\n deleter: false,\n muted: false,\n address: null,\n groupTopic: undefined,\n channel: undefined,\n fullName: undefined,\n description: undefined,\n avatar: null,\n private: null,\n selectedContact: null,\n access: null,\n modeGiven: null,\n modeWant: null,\n modeGiven2: null, // P2P topic, the other user mode given\n modeWant2: null, // P2P topic, the other user mode want\n auth: null,\n anon: null,\n contactList: [],\n trustedBadges: [],\n previousMetaDesc: undefined,\n previousSubsUpdated: undefined,\n };\n\n this.resetSubs = this.resetSubs.bind(this);\n this.resetDesc = this.resetDesc.bind(this);\n this.resetTags = this.resetTags.bind(this);\n this.onMetaDesc = this.onMetaDesc.bind(this);\n this.onSubsUpdated = this.onSubsUpdated.bind(this);\n this.handleImageChanged = this.handleImageChanged.bind(this);\n this.handleMuted = this.handleMuted.bind(this);\n this.handleUnarchive = this.handleUnarchive.bind(this);\n this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);\n this.handleLaunchPermissionsEditor = this.handleLaunchPermissionsEditor.bind(this);\n this.handleShowAddMembers = this.handleShowAddMembers.bind(this);\n this.handleMemberUpdateRequest = this.handleMemberUpdateRequest.bind(this);\n this.handleMemberSelected = this.handleMemberSelected.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleBackNavigate = this.handleBackNavigate.bind(this);\n }\n\n // No need to separately handle component mount.\n componentDidUpdate(props) {\n const topic = this.props.tinode.getTopic(props.topic);\n if (!topic) {\n return;\n }\n\n if (this.onMetaDesc != topic.onMetaDesc) {\n this.previousMetaDesc = topic.onMetaDesc;\n topic.onMetaDesc = this.onMetaDesc;\n\n this.previousSubsUpdated = topic.onSubsUpdated;\n topic.onSubsUpdated = this.onSubsUpdated;\n }\n\n if (this.state.topic != props.topic) {\n this.setState({topic: props.topic});\n this.resetDesc(topic, props);\n this.resetSubs(topic, props);\n this.resetTags(topic);\n }\n }\n\n componentWillUnmount() {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.setState({topic: null});\n topic.onMetaDesc = this.previousMetaDesc;\n topic.onSubsUpdated = this.previousSubsUpdated;\n }\n\n resetSubs(topic, props) {\n const newState = {contactList: []};\n if (topic.getType() == 'p2p') {\n // Fetch the other party in the p2p conversation.\n // Topic may not be ready yet, so check if user is found.\n const user2 = topic.subscriber(props.topic);\n if (user2) {\n newState.modeGiven2 = user2.acs.getGiven();\n newState.modeWant2 = user2.acs.getWant();\n } else {\n newState.modeGiven2 = NO_ACCESS_MODE;\n newState.modeWant2 = NO_ACCESS_MODE;\n }\n } else {\n topic.subscribers((sub) => {\n newState.contactList.push(sub);\n }, this);\n }\n\n this.setState(newState);\n }\n\n resetDesc(topic, props) {\n const defacs = topic.getDefaultAccess() || {};\n const acs = topic.getAccessMode();\n\n const badges = [];\n if (topic.trusted) {\n for (const [key, val] of Object.entries(topic.trusted)) {\n if (val) {\n badges.push(key);\n }\n }\n }\n\n this.setState({\n owner: acs && acs.isOwner(),\n admin: acs && acs.isAdmin(),\n sharer: acs && acs.isSharer(),\n deleter: acs && acs.isDeleter(),\n muted: acs && acs.isMuted(),\n\n fullName: clipStr(topic.public && topic.public.fn, MAX_TITLE_LENGTH),\n description: clipStr(topic.public && topic.public.note, MAX_TOPIC_DESCRIPTION_LENGTH),\n avatar: makeImageUrl(topic.public ? topic.public.photo : null),\n trustedBadges: badges,\n private: clipStr(topic.private && topic.private.comment, MAX_TITLE_LENGTH),\n archived: topic.isArchived(),\n address: topic.name,\n groupTopic: topic.isGroupType(),\n channel: topic.isChannelType() || topic.chan,\n access: acs ? acs.getMode() : undefined,\n modeGiven: acs ? acs.getGiven() : undefined,\n modeWant: acs ? acs.getWant() : undefined,\n auth: defacs.auth,\n anon: defacs.anon\n });\n }\n\n resetTags(topic) {\n if (topic.getType() != 'grp') {\n return;\n }\n\n const acs = topic.getAccessMode();\n if (acs && acs.isOwner()) {\n // Requesting tags: owner is editing the topic.\n topic.getMeta(topic.startMetaQuery().withTags().build());\n }\n }\n\n onMetaDesc(desc) {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.resetDesc(topic, this.props);\n\n if (this.previousMetaDesc && this.previousMetaDesc != this.onMetaDesc) {\n this.previousMetaDesc(desc);\n }\n }\n\n onSubsUpdated(subs) {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.resetSubs(topic, this.props);\n\n if (this.previousSubsUpdated && this.previousSubsUpdated != this.onSubsUpdated) {\n this.previousSubsUpdated(subs);\n }\n }\n\n handleImageChanged(mime, img) {\n this.setState({avatar: img});\n this.props.onTopicDescUpdate(this.props.topic, theCard(null, img || Tinode.DEL_CHAR), null);\n }\n\n handleMuted(ignored, checked) {\n this.setState({muted: checked});\n this.props.onChangePermissions(this.props.topic, checked ? '-P' : '+P');\n }\n\n handleUnarchive(ignored, ignored2) {\n this.props.onTopicUnArchive(this.props.topic);\n }\n\n handlePermissionsChanged(which, perm) {\n switch (which) {\n case 'auth':\n this.props.onTopicDescUpdateRequest(this.props.topic, null, null, {auth: perm});\n break;\n case 'anon':\n this.props.onTopicDescUpdateRequest(this.props.topic, null, null, {anon: perm});\n break;\n case 'mode':\n case 'want':\n this.props.onChangePermissions(this.props.topic, perm);\n break;\n case 'given':\n this.props.onChangePermissions(this.props.topic, perm, this.props.topic);\n break;\n case 'user':\n this.props.onChangePermissions(this.props.topic, perm, this.state.userPermissionsEdited);\n break;\n }\n\n this.handleBackNavigate();\n }\n\n handleLaunchPermissionsEditor(which, uid) {\n const {formatMessage} = this.props.intl;\n let toEdit, toCompare, toSkip, titleEdit, titleCompare, userTitle, userAvatar;\n switch (which) {\n case 'mode':\n toEdit = this.state.access;\n break;\n case 'want':\n toEdit = this.state.modeWant;\n toCompare = this.state.modeGiven;\n if (this.state.owner) {\n // Don't allow owner to unset 'O' permission. All other permissions are OK.\n toSkip = 'O';\n } else {\n // Allow accepting any of 'ASDO' permissions but don't allow asking for them.\n toSkip = AccessMode.encode(AccessMode.diff('ASDO', this.state.modeGiven));\n if (this.state.channel) {\n // Channels are read-only.\n toSkip += 'W';\n }\n }\n titleEdit = formatMessage(messages.perm_want);\n titleCompare = formatMessage(messages.perm_given);\n break;\n case 'given':\n toEdit = this.state.modeGiven2;\n toCompare = this.state.modeWant2;\n toSkip = this.state.groupTopic ? (this.state.owner ? '' : 'O') : 'ASDO';\n titleEdit = formatMessage(messages.perm_given);\n titleCompare = formatMessage(messages.perm_want);\n break;\n case 'auth':\n toEdit = this.state.auth;\n toSkip = 'O';\n break;\n case 'anon':\n toEdit = this.state.anon;\n toSkip = 'O';\n break;\n case 'user': {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n const user = topic.subscriber(uid);\n if (!user || !user.acs) {\n return;\n }\n toEdit = user.acs.getGiven();\n toCompare = user.acs.getWant();\n toSkip = this.state.owner ? '' : 'O';\n titleEdit = formatMessage(messages.perm_given);\n titleCompare = formatMessage(messages.perm_want);\n if (user.public) {\n userTitle = user.public.fn;\n userAvatar = user.public.photo;\n }\n break;\n }\n default:\n console.error(\"Unknown permission editing mode '\" + which + \"'\");\n return;\n }\n this.setState({\n userPermissionsEdited: uid,\n userPermissionsTitle: userTitle,\n userPermissionsAvatar: userAvatar,\n editedPermissions: toEdit,\n immutablePermissions: toCompare,\n editedPermissionsTitle: titleEdit,\n immutablePermissionsTitle: titleCompare,\n editedPermissionsSkipped: toSkip,\n });\n this.props.onNavigate(`perm/${which}`);\n }\n\n handleShowAddMembers(e) {\n e.preventDefault();\n this.props.onInitFind();\n this.props.onNavigate('members');\n }\n\n handleMemberUpdateRequest(members, added, removed) {\n this.props.onMemberUpdateRequest(this.props.topic, added, removed);\n this.props.onNavigate('info');\n }\n\n handleMemberSelected(uid) {\n this.setState({selectedContact: uid});\n }\n\n handleBackNavigate() {\n const args = (this.props.panel || 'info').split('/');\n if (args[0] == 'info') {\n this.props.onNavigate(null);\n } else if (args[0] == 'perm') {\n if (args[1] == 'user') {\n this.props.onNavigate('info');\n } else {\n this.props.onNavigate('security');\n }\n } else {\n this.props.onNavigate('info');\n }\n }\n\n handleContextMenu(params) {\n const {formatMessage} = this.props.intl;\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n const user = topic.subscriber(params.topicName);\n if (!user || !user.acs) {\n return;\n }\n\n const isMe = this.props.tinode.isMe(params.topicName);\n const menuItems = [\n {title: formatMessage(messages.edit_permissions), handler: () => {\n this.handleLaunchPermissionsEditor(isMe ? 'want' : 'user', params.topicName);\n }}\n ];\n if (!isMe) {\n menuItems.push('member_delete');\n }\n menuItems.push(user.acs.isMuted() ? 'member_unmute' : 'member_mute');\n if (!isMe) {\n menuItems.push(user.acs.isJoiner() ? 'member_block' : 'member_unblock');\n }\n this.props.showContextMenu({\n topicName: this.props.topic,\n x: params.x,\n y: params.y,\n user: params.topicName}, menuItems);\n }\n\n render() {\n const args = (this.props.panel || 'info').split('/');\n const view = args[0];\n args.shift();\n\n const {formatMessage} = this.props.intl;\n const panelTitle = formatMessage((view == 'perm' ? messages['perm_' + args[0]] : messages[view])\n || messages['info']);\n\n return (\n
\n
\n
{panelTitle}
\n
\n \n
\n
\n {this.props.displayMobile ?\n : null}\n {view == 'members' ?\n \n :\n view == 'perm' && args.length > 0 ?\n this.handlePermissionsChanged(args[0], mode)}\n onCancel={this.handleBackNavigate} />\n :\n view == 'general' ?\n \n :\n view == 'security' ?\n \n :\n
\n
\n {e.preventDefault(); this.props.onNavigate('general');}}>\n edit \n \n \n
\n \n
\n
\n
\n
{this.state.fullName}\n {this.state.channel ? \"channel\" : null}
\n
\n {this.state.private ?\n
\n
\n
{this.state.private}
\n
\n : null\n }\n
\n  \n {this.state.address}\n
\n
\n \n
\n {this.state.description ?\n
\n \n
{this.state.description}
\n
: null}\n
\n
\n
\n \n \n
\n {this.state.archived ?\n
\n \n \n
\n :\n null\n }\n
\n \n {this.state.groupTopic && this.state.sharer ?\n <>\n
\n
\n \n
\n \n {\n (no_members) => \n }\n \n :\n null\n }\n
\n }\n
\n );\n }\n};\n\nexport default injectIntl(InfoView);\n","// Login form.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport CheckBox from '../widgets/checkbox.jsx';\nimport VisiblePassword from '../widgets/visible-password.jsx';\n\nexport default class LoginView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n login: props.login,\n password: '',\n hostName: props.serverAddress,\n saveToken: props.persist\n };\n this.handleLoginChange = this.handleLoginChange.bind(this);\n this.handlePasswordChange = this.handlePasswordChange.bind(this);\n this.handleToggleSaveToken = this.handleToggleSaveToken.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n handleLoginChange(e) {\n this.setState({login: e.target.value});\n }\n\n handlePasswordChange(e) {\n this.setState({password: e.target.value});\n }\n\n handleToggleSaveToken() {\n this.props.onPersistenceChange(!this.state.saveToken);\n this.setState({saveToken: !this.state.saveToken});\n }\n\n handleSubmit(e) {\n e.preventDefault();\n this.props.onLogin(this.state.login.trim(), this.state.password.trim());\n }\n\n render() {\n let submitClasses = 'primary';\n if (this.props.disabled) {\n submitClasses += ' disabled';\n }\n\n return (\n
\n \n {\n (login_prompt) => \n }\n \n \n {\n (password_prompt) => \n }\n \n
\n \n \n \n \n \n
\n
\n \n
\n
\n );\n }\n};\n/* END Login */\n","/* This is just a static page to display when no conversation is selected. */\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport { APP_NAME } from '../config.js';\n\nexport default class LogoView extends React.PureComponent {\n render() {\n const version = APP_NAME + ' (' + Tinode.getLibrary() + ')';\n return (\n
\n
\n \n \"logo\"\n

Tinode Web

\n
\n

{version}

\n

{this.props.serverVersion} ({this.props.serverAddress})

\n
\n
\n );\n }\n};\n","// Panel with a chat.\n\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { Drafty, Tinode } from 'tinode-sdk';\n\nimport CallPanel from '../widgets/call-panel.jsx';\nimport ChatMessage from '../widgets/chat-message.jsx';\nimport ContactBadges from '../widgets/contact-badges.jsx';\nimport DocPreview from '../widgets/doc-preview.jsx';\nimport ErrorPanel from '../widgets/error-panel.jsx';\nimport GroupSubs from '../widgets/group-subs.jsx';\nimport ImagePreview from '../widgets/image-preview.jsx';\nimport Invitation from '../widgets/invitation.jsx';\nimport LetterTile from '../widgets/letter-tile.jsx';\nimport LoadSpinner from '../widgets/load-spinner.jsx';\nimport LogoView from './logo-view.jsx';\nimport MetaMessage from '../widgets/meta-message.jsx';\nimport SendMessage from '../widgets/send-message.jsx';\n\nimport { DEFAULT_P2P_ACCESS_MODE, IMAGE_PREVIEW_DIM, KEYPRESS_DELAY,\n MESSAGES_PAGE, MAX_EXTERN_ATTACHMENT_SIZE, MAX_IMAGE_DIM, MAX_INBAND_ATTACHMENT_SIZE,\n READ_DELAY, QUOTED_REPLY_LENGTH } from '../config.js';\nimport { CALL_STATE_OUTGOING_INITATED, CALL_STATE_IN_PROGRESS } from '../constants.js';\nimport { blobToBase64, fileToBase64, imageScaled, makeImageUrl } from '../lib/blob-helpers.js';\nimport HashNavigation from '../lib/navigation.js';\nimport { bytesToHumanSize, shortDateFormat } from '../lib/strformat.js';\n\n// Run timer with this frequency (ms) for checking notification queue.\nconst NOTIFICATION_EXEC_INTERVAL = 300;\n// Scroll distance before [go to latest message] button is shown.\nconst SHOW_GO_TO_LAST_DIST = 100;\n\nconst messages = defineMessages({\n online_now: {\n id: 'online_now',\n defaultMessage: 'online now',\n description: 'Indicator that the user or topic is currently online',\n },\n last_seen: {\n id: 'last_seen_timestamp',\n defaultMessage: 'Last seen',\n description: 'Label for the timestamp of when the user or topic was last online'\n },\n not_found: {\n id: 'title_not_found',\n defaultMessage: 'Not found',\n description: 'Title shown when topic is not found'\n },\n channel: {\n id: 'channel',\n defaultMessage: 'channel',\n description: 'Subtitle shown for channels in MessagesView instead of last seen'\n },\n file_attachment_too_large: {\n id: 'file_attachment_too_large',\n defaultMessage: 'The file size {size} exceeds the {limit} limit.',\n description: 'Error message when attachment is too large'\n },\n invalid_content: {\n id: 'invalid_content',\n defaultMessage: 'invalid content',\n description: 'Shown when the message is unreadable'\n },\n});\n\n// Checks if the access permissions are granted but not yet accepted.\nfunction isUnconfirmed(acs) {\n if (acs) {\n const ex = acs.getExcessive() || '';\n return acs.isJoiner('given') && (ex.includes('R') || ex.includes('W'));\n }\n return false;\n}\n\nfunction isPeerRestricted(acs) {\n if (acs) {\n const ms = acs.getMissing() || '';\n return acs.isJoiner('want') && (ms.includes('R') || ms.includes('W'));\n }\n return false;\n}\n\nfunction shouldPresentCallPanel(callState) {\n // Show call panel if either:\n // - call is outgoing (and the client is waiting for the other side to pick up) or,\n // - call is already in progress.\n return callState == CALL_STATE_OUTGOING_INITATED || callState == CALL_STATE_IN_PROGRESS;\n}\n\nclass MessagesView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = MessagesView.getDerivedStateFromProps(props, {});\n\n this.leave = this.leave.bind(this);\n this.sendMessage = this.sendMessage.bind(this);\n this.retrySend = this.retrySend.bind(this);\n this.sendImageAttachment = this.sendImageAttachment.bind(this);\n this.sendFileAttachment = this.sendFileAttachment.bind(this);\n this.sendAudioAttachment = this.sendAudioAttachment.bind(this);\n this.sendKeyPress = this.sendKeyPress.bind(this);\n this.subscribe = this.subscribe.bind(this);\n this.handleScrollReference = this.handleScrollReference.bind(this);\n this.handleScrollEvent = this.handleScrollEvent.bind(this);\n this.handleDescChange = this.handleDescChange.bind(this);\n this.handleSubsUpdated = this.handleSubsUpdated.bind(this);\n this.handleMessageUpdate = this.handleMessageUpdate.bind(this);\n this.handleAllMessagesReceived = this.handleAllMessagesReceived.bind(this);\n this.handleInfoReceipt = this.handleInfoReceipt.bind(this);\n this.handleImagePostview = this.handleImagePostview.bind(this);\n this.handleClosePreview = this.handleClosePreview.bind(this);\n this.handleFormResponse = this.handleFormResponse.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n this.handleShowMessageContextMenu = this.handleShowMessageContextMenu.bind(this);\n this.handleNewChatAcceptance = this.handleNewChatAcceptance.bind(this);\n this.handleEnablePeer = this.handleEnablePeer.bind(this);\n this.handleAttachFile = this.handleAttachFile.bind(this);\n this.handleAttachImage = this.handleAttachImage.bind(this);\n this.handleCancelUpload = this.handleCancelUpload.bind(this);\n this.postReadNotification = this.postReadNotification.bind(this);\n this.clearNotificationQueue = this.clearNotificationQueue.bind(this);\n this.goToLatestMessage = this.goToLatestMessage.bind(this);\n\n this.handlePickReply = this.handlePickReply.bind(this);\n this.handleCancelReply = this.handleCancelReply.bind(this);\n this.handleQuoteClick = this.handleQuoteClick.bind(this);\n this.handleCallHangup = this.handleCallHangup.bind(this);\n\n this.chatMessageRefs = {};\n this.getOrCreateMessageRef = this.getOrCreateMessageRef.bind(this);\n\n this.readNotificationQueue = [];\n this.readNotificationTimer = null;\n\n this.keyPressTimer = null;\n }\n\n getOrCreateMessageRef(seqId) {\n if (this.chatMessageRefs.hasOwnProperty(seqId)) {\n return this.chatMessageRefs[seqId];\n }\n const ref = React.createRef();\n this.chatMessageRefs[seqId] = ref;\n return ref;\n }\n\n componentDidMount() {\n if (this.messagesScroller) {\n this.messagesScroller.addEventListener('scroll', this.handleScrollEvent);\n }\n }\n\n componentWillUnmount() {\n if (this.messagesScroller) {\n this.messagesScroller.removeEventListener('scroll', this.handleScrollEvent);\n }\n\n // Flush all notifications.\n this.clearNotificationQueue();\n }\n\n // Scroll last message into view on component update e.g. on message received\n // or vertical shrinking.\n componentDidUpdate(prevProps, prevState) {\n if (this.messagesScroller &&\n (prevState.topic != this.state.topic || prevState.messageCount != this.state.messageCount)) {\n // New message.\n if (this.state.scrollPosition < SHOW_GO_TO_LAST_DIST) {\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight -\n this.state.scrollPosition -\n this.messagesScroller.offsetHeight;\n }\n }\n\n const topic = this.props.tinode ? this.props.tinode.getTopic(this.state.topic) : undefined;\n if (this.state.topic != prevState.topic) {\n if (prevState.topic && !Tinode.isNewGroupTopicName(prevState.topic)) {\n this.leave(prevState.topic);\n if (prevState.rtcPanel) {\n this.handleCallHangup(prevState.topic, prevProps.callSeq);\n }\n }\n\n if (topic) {\n topic.onData = this.handleMessageUpdate;\n topic.onAllMessagesReceived = this.handleAllMessagesReceived;\n topic.onInfo = this.handleInfoReceipt;\n topic.onMetaDesc = this.handleDescChange;\n topic.onSubsUpdated = this.handleSubsUpdated;\n topic.onPres = this.handleSubsUpdated;\n }\n }\n\n if (!this.props.applicationVisible) {\n // If application is not visible, flush all unsent 'read' notifications.\n this.clearNotificationQueue();\n } else {\n // Otherwise assume there are unread messages.\n this.postReadNotification(0);\n }\n\n if (topic && ((this.state.topic != prevState.topic) || !prevProps.ready)) {\n // Don't immediately subscribe to a new p2p topic, wait for the first message.\n if (topic._new && topic.isP2PType()) {\n topic.getMeta(topic.startMetaQuery().withDesc().build());\n } else {\n this.subscribe(topic);\n }\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n let nextState = {};\n if (!nextProps.topic) {\n // Default state: no topic.\n nextState = {\n messageCount: 0,\n latestClearId: -1,\n onlineSubs: [],\n topic: null,\n title: '',\n avatar: null,\n isVerified: false,\n isStaff: false,\n isDangerous: false,\n deleted: false,\n docPreview: null,\n imagePreview: null,\n imagePostview: null,\n rtcPanel: null,\n typingIndicator: false,\n scrollPosition: 0,\n fetchingMessages: false,\n peerMessagingDisabled: false,\n channel: false,\n reply: null,\n showGoToLastButton: false\n };\n } else if (nextProps.topic != prevState.topic) {\n const topic = nextProps.tinode.getTopic(nextProps.topic);\n\n nextState = {\n topic: nextProps.topic,\n docPreview: null,\n imagePreview: null,\n imagePostview: null,\n rtcPanel: null,\n typingIndicator: false,\n scrollPosition: 0,\n fetchingMessages: false,\n showGoToLastButton: false,\n deleted: topic._deleted\n };\n\n if (nextProps.forwardMessage) {\n // We are forwarding a message. Show preview.\n nextState.reply = {\n content: nextProps.forwardMessage.preview,\n seq: null\n };\n }\n\n if (topic) {\n // Topic exists.\n const subs = [];\n\n if (nextProps.connected) {\n topic.subscribers((sub) => {\n if (sub.online && sub.user != nextProps.myUserId) {\n subs.push(sub);\n }\n });\n }\n\n Object.assign(nextState, {\n onlineSubs: subs\n });\n\n if (topic.public) {\n Object.assign(nextState, {\n title: topic.public.fn,\n avatar: makeImageUrl(topic.public.photo)\n });\n } else {\n Object.assign(nextState, {\n title: '',\n avatar: null\n });\n }\n\n const peer = topic.p2pPeerDesc();\n if (peer) {\n Object.assign(nextState, {\n peerMessagingDisabled: isPeerRestricted(peer.acs)\n });\n } else if (prevState.peerMessagingDisabled) {\n Object.assign(nextState, {\n peerMessagingDisabled: false\n });\n }\n Object.assign(nextState, {\n messageCount: topic.messageCount(),\n latestClearId: topic.maxClearId(),\n channel: topic.isChannelType()\n });\n\n if (nextProps.callTopic == topic.name && shouldPresentCallPanel(nextProps.callState)) {\n nextState.rtcPanel = nextProps.callTopic;\n }\n } else {\n // Invalid topic.\n Object.assign(nextState, {\n messageCount: 0,\n latestClearId: -1,\n onlineSubs: [],\n title: '',\n avatar: null,\n peerMessagingDisabled: false,\n channel: false\n });\n }\n } else {\n // We are still in same topic. Show the call panel if necessary.\n if (nextProps.callTopic == prevState.topic && !prevState.rtcPanel &&\n shouldPresentCallPanel(nextProps.callState)) {\n nextState.rtcPanel = nextProps.callTopic;\n }\n }\n\n if (nextProps.acs) {\n if (nextProps.acs.isWriter() != prevState.isWriter) {\n nextState.isWriter = !prevState.isWriter;\n }\n if (nextProps.acs.isReader() != prevState.isReader) {\n nextState.isReader = !prevState.isReader;\n }\n if (!nextProps.acs.isReader('given') != prevState.readingBlocked) {\n nextState.readingBlocked = !prevState.readingBlocked;\n }\n if (nextProps.acs.isSharer() != prevState.isSharer) {\n nextState.isSharer = !prevState.isSharer;\n }\n } else {\n if (prevState.isWriter) {\n nextState.isWriter = false;\n }\n if (prevState.isReader) {\n nextState.isReader = false;\n }\n if (!prevState.readingBlocked) {\n prevState.readingBlocked = true;\n }\n if (prevState.isSharer) {\n nextState.isSharer = false;\n }\n }\n\n if (isUnconfirmed(nextProps.acs) == !prevState.unconformed) {\n nextState.unconfirmed = !prevState.unconformed;\n }\n\n // Clear subscribers online when there is no connection.\n if (!nextProps.connected && prevState.onlineSubs && prevState.onlineSubs.length > 0) {\n nextState.onlineSubs = [];\n }\n\n return nextState;\n }\n\n subscribe(topic) {\n if (topic.isSubscribed() || !this.props.ready) {\n return;\n }\n\n // Is this a new topic?\n const newTopic = (this.props.newTopicParams && this.props.newTopicParams._topicName == this.props.topic);\n\n // Don't request the tags. They are useless unless the user\n // is the owner and is editing the topic.\n let getQuery = topic.startMetaQuery().withLaterDesc().withLaterSub();\n if (this.state.isReader || newTopic) {\n // Reading is either permitted or we don't know because it's a new topic. Ask for messages.\n getQuery = getQuery.withLaterData(MESSAGES_PAGE);\n if (this.state.isReader) {\n getQuery = getQuery.withLaterDel();\n }\n // And show \"loading\" spinner.\n this.setState({ fetchingMessages: true });\n }\n\n const setQuery = newTopic ? this.props.newTopicParams : undefined;\n topic.subscribe(getQuery.build(), setQuery)\n .then((ctrl) => {\n if (ctrl.code == 303) {\n // Redirect to another topic requested.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic('', ctrl.params.topic));\n return;\n }\n if (this.state.topic != ctrl.topic) {\n this.setState({topic: ctrl.topic});\n }\n this.props.onNewTopicCreated(this.props.topic, ctrl.topic);\n // If there are unsent messages (except video call messages),\n // try sending them now. Unsent video call messages will be dropped.\n let calls = [];\n topic.queuedMessages((pub) => {\n if (pub._sending) {\n return;\n }\n if (pub.head && pub.head.webrtc) {\n // Filter out unsent video call messages.\n calls.push(pub.seq);\n return;\n }\n if (topic.isSubscribed()) {\n this.retrySend(pub);\n }\n });\n if (calls.length > 0) {\n topic.delMessagesList(calls, true);\n }\n })\n .catch((err) => {\n console.error(\"Failed subscription to\", this.state.topic, err);\n this.props.onError(err.message, 'err');\n const blankState = MessagesView.getDerivedStateFromProps({}, {});\n blankState.title = this.props.intl.formatMessage(messages.not_found);\n this.setState(blankState);\n });\n }\n\n leave(oldTopicName) {\n if (!oldTopicName || !this.props.tinode.isTopicCached(oldTopicName)) {\n return;\n }\n\n const oldTopic = this.props.tinode.getTopic(oldTopicName);\n if (oldTopic && oldTopic.isSubscribed()) {\n oldTopic.leave(false)\n .catch(() => { /* do nothing here */ })\n .finally(() => {\n // We don't care if the request succeeded or failed.\n // The topic is dead regardless.\n this.setState({fetchingMessages: false});\n oldTopic.onData = undefined;\n oldTopic.onAllMessagesReceived = undefined;\n oldTopic.onInfo = undefined;\n oldTopic.onMetaDesc = undefined;\n oldTopic.onSubsUpdated = undefined;\n oldTopic.onPres = undefined;\n });\n }\n }\n\n // Don't use React.createRef as the ref.current is not available in componentDidMount in this component.\n handleScrollReference(node) {\n if (node) {\n node.addEventListener('scroll', this.handleScrollEvent);\n this.messagesScroller = node;\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight - this.state.scrollPosition;\n }\n }\n\n // Get older messages and show/hide [go to latest message] button.\n handleScrollEvent(event) {\n const pos = event.target.scrollHeight - event.target.scrollTop - event.target.offsetHeight;\n this.setState({\n scrollPosition: pos,\n // Show [go to latest message] if far enough from bottom and scrolling down.\n showGoToLastButton: (pos > SHOW_GO_TO_LAST_DIST) && (pos < this.state.scrollPosition),\n });\n\n if (this.state.fetchingMessages) {\n return;\n }\n\n if (event.target.scrollTop <= 0) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic && topic.isSubscribed() && topic.msgHasMoreMessages()) {\n this.setState({fetchingMessages: true}, () => {\n topic.getMessagesPage(MESSAGES_PAGE)\n .catch((err) => this.props.onError(err.message, 'err'))\n .finally(() => this.setState({fetchingMessages: false}));\n });\n }\n }\n }\n\n goToLatestMessage() {\n this.setState({scrollPosition: 0});\n if (this.messagesScroller) {\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight;\n }\n }\n\n handleDescChange(desc) {\n if (desc.public) {\n this.setState({\n title: desc.public.fn,\n avatar: makeImageUrl(desc.public.photo)\n });\n } else {\n this.setState({\n title: '',\n avatar: null\n });\n }\n\n if (desc.acs) {\n this.setState({\n isWriter: desc.acs.isWriter(),\n isReader: desc.acs.isReader(),\n readingBlocked: !desc.acs.isReader('given'),\n unconfirmed: isUnconfirmed(desc.acs),\n });\n }\n }\n\n postReadNotification(seq) {\n // Ignore notifications if the app is invisible.\n if (!this.props.applicationVisible) {\n return;\n }\n\n // Set up the timer if it's not running already.\n if (!this.readNotificationTimer) {\n this.readNotificationTimer = setInterval(_ => {\n if (this.readNotificationQueue.length == 0) {\n // Shut down the timer if the queue is empty.\n clearInterval(this.readNotificationTimer);\n this.readNotificationTimer = null;\n return;\n }\n\n let seq = -1;\n while (this.readNotificationQueue.length > 0) {\n const n = this.readNotificationQueue[0];\n if (n.topicName != this.state.topic) {\n // Topic has changed. Drop the notification.\n this.readNotificationQueue.shift();\n continue;\n }\n\n const now = new Date();\n if (n.sendAt <= now) {\n // Remove expired notification from queue.\n this.readNotificationQueue.shift();\n seq = Math.max(seq, n.seq);\n } else {\n break;\n }\n }\n\n // Send only one notification for the whole batch of messages.\n if (seq >= 0) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic) {\n topic.noteRead(seq);\n }\n }\n }, NOTIFICATION_EXEC_INTERVAL);\n }\n\n const now = new Date();\n this.readNotificationQueue.push({\n topicName: this.state.topic,\n seq: seq,\n sendAt: now.setMilliseconds(now.getMilliseconds() + READ_DELAY)\n });\n }\n\n // Clear notification queue and timer.\n clearNotificationQueue() {\n this.readNotificationQueue = [];\n if (this.readNotificationTimer) {\n clearInterval(this.readNotificationTimer);\n this.readNotificationTimer = null;\n }\n }\n\n handleSubsUpdated() {\n if (this.state.topic) {\n const subs = [];\n const topic = this.props.tinode.getTopic(this.state.topic);\n topic.subscribers((sub) => {\n if (sub.online && sub.user != this.props.myUserId) {\n subs.push(sub);\n }\n });\n const newState = {onlineSubs: subs};\n const peer = topic.p2pPeerDesc();\n if (peer) {\n Object.assign(newState, {\n peerMessagingDisabled: isPeerRestricted(peer.acs)\n });\n } else if (this.state.peerMessagingDisabled) {\n Object.assign(newState, {\n peerMessagingDisabled: false\n });\n }\n this.setState(newState);\n }\n }\n\n // The 'msg' could be false-ish if some message ranges were deleted.\n handleMessageUpdate(msg) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (!msg) {\n // msg could be null if one or more messages were deleted.\n // Updating state to force redraw.\n this.setState({latestClearId: topic.maxClearId()});\n return;\n }\n\n clearTimeout(this.keyPressTimer)\n this.setState({messageCount: topic.messageCount(), typingIndicator: false}, _ => {\n // Scroll to the bottom if the message is added to the end of the message\n // list if already at the bottom, otherwise show [go to latest] button.\n // Implemented as a callback to be sure the scroll height has been updated.\n if (topic.isNewMessage(msg.seq)) {\n if (this.state.scrollPosition > SHOW_GO_TO_LAST_DIST) {\n this.setState({showGoToLastButton: true});\n } else {\n this.goToLatestMessage();\n }\n }\n });\n\n // Aknowledge messages except own messages. They are\n // automatically assumed to be read and recived.\n const status = topic.msgStatus(msg, true);\n if (status >= Tinode.MESSAGE_STATUS_SENT && msg.from != this.props.myUserId) {\n this.postReadNotification(msg.seq);\n }\n }\n\n handleAllMessagesReceived(count) {\n this.setState({fetchingMessages: false});\n if (count > 0) {\n // 0 means \"latest\".\n this.postReadNotification(0);\n }\n }\n\n handleInfoReceipt(info) {\n switch (info.what) {\n case 'kp': {\n clearTimeout(this.keyPressTimer);\n this.keyPressTimer = setTimeout(() => {\n this.setState({typingIndicator: false});\n }, KEYPRESS_DELAY + 1000);\n if (!this.state.typingIndicator) {\n this.setState({typingIndicator: true});\n }\n break;\n }\n case 'read':\n case 'recv':\n // Redraw due to changed recv/read status.\n this.forceUpdate();\n break;\n default:\n console.info(\"Other change in topic: \", info.what);\n }\n }\n\n handleImagePostview(content) {\n this.setState({ imagePostview: content });\n }\n\n handleClosePreview() {\n if (this.state.imagePreview && this.state.imagePreview.url) {\n URL.revokeObjectURL(this.state.imagePreview.url);\n }\n this.setState({ imagePostview: null, imagePreview: null, docPreview: null });\n }\n\n handleFormResponse(action, text, data) {\n if (action == 'pub') {\n this.sendMessage(Drafty.attachJSON(Drafty.parse(text), data));\n } else if (action == 'url') {\n const url = new URL(data.ref);\n const params = url.searchParams;\n for (let key in data.resp) {\n if (data.resp.hasOwnProperty(key)) {\n params.set(key, data.resp[key]);\n }\n }\n ['name', 'seq'].map((key) => {\n if (data[key]) {\n params.set(key, data[key]);\n }\n });\n params.set('uid', this.props.myUserId);\n params.set('topic', this.state.topic);\n url.search = params;\n window.open(url, '_blank');\n } else {\n console.info(\"Unknown action in form\", action);\n }\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showContextMenu({ topicName: this.state.topic, y: e.pageY, x: e.pageX });\n }\n\n handleShowMessageContextMenu(params, messageSpecificMenuItems) {\n if (params.userFrom == 'chan') {\n params.userFrom = this.state.topic;\n params.userName = this.state.title;\n }\n params.topicName = this.state.topic;\n const menuItems = messageSpecificMenuItems || [];\n const topic = this.props.tinode.getTopic(params.topicName);\n if (topic) {\n if (!topic.isChannelType()) {\n menuItems.push('message_delete');\n }\n const acs = topic.getAccessMode();\n if (acs && acs.isDeleter()) {\n menuItems.push('message_delete_hard');\n }\n }\n this.props.showContextMenu(params, menuItems);\n }\n\n handleNewChatAcceptance(action) {\n this.props.onNewChat(this.state.topic, action);\n }\n\n handleEnablePeer(e) {\n e.preventDefault();\n this.props.onChangePermissions(this.state.topic, DEFAULT_P2P_ACCESS_MODE, this.state.topic);\n }\n\n sendKeyPress() {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic.isSubscribed()) {\n topic.noteKeyPress();\n }\n }\n\n // sendMessage sends the message with an optional subscription to topic first.\n sendMessage(msg, uploadCompletionPromise, uploader) {\n let head;\n if (this.props.forwardMessage) {\n // We are forwarding a message.\n msg = this.props.forwardMessage.msg;\n head = this.props.forwardMessage.head;\n this.handleCancelReply();\n } else if (this.state.reply && this.state.reply.content) {\n // We are replying to a message in this topic.\n head = {reply: '' + this.state.reply.seq};\n // Turn it into Drafty so we can make a quoted Drafty object later.\n if (typeof msg == 'string') {\n msg = Drafty.parse(msg);\n }\n msg = Drafty.append(Drafty.sanitizeEntities(this.state.reply.content), msg);\n this.handleCancelReply();\n }\n this.props.sendMessage(msg, uploadCompletionPromise, uploader, head);\n }\n\n // Retry sending a message.\n retrySend(pub) {\n this.props.sendMessage(pub.content, undefined, undefined, pub.head)\n .then(() => {\n // All good. Remove the original message draft from the cache.\n const topic = this.props.tinode.getTopic(this.state.topic);\n topic.delMessagesList([pub.seq], true);\n });\n }\n\n // Send attachment as Drafty message:\n // - if file is too large, upload it and send a s link.\n // - if file is small enough, just send it in-band.\n sendFileAttachment(file) {\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = (this.props.tinode.getServerParam('maxMessageSize',\n MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024) | 0;\n\n if (file.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(file);\n const msg = Drafty.attachFile(null, {\n mime: file.type,\n filename: file.name,\n size: file.size,\n urlPromise: uploadCompletionPromise\n });\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n } else {\n // Small enough to send inband.\n fileToBase64(file)\n .then(b64 => this.sendMessage(Drafty.attachFile(null, {mime: b64.mime, data: b64.bits, filename: b64.name})))\n .catch(err => this.props.onError(err));\n }\n }\n\n // handleAttachFile method is called when [Attach file] button is clicked: launch attachment preview.\n handleAttachFile(file) {\n const maxExternAttachmentSize = this.props.tinode.getServerParam('maxFileUploadSize', MAX_EXTERN_ATTACHMENT_SIZE);\n\n if (file.size > maxExternAttachmentSize) {\n // Too large.\n this.props.onError(this.props.intl.formatMessage(messages.file_attachment_too_large,\n {size: bytesToHumanSize(file.size), limit: bytesToHumanSize(maxExternAttachmentSize)}), 'err');\n } else {\n this.setState({\n docPreview: {\n file: file,\n name: file.name,\n size: file.size,\n type: file.type\n }\n });\n }\n }\n\n handleCallHangup(topic, seq) {\n this.props.onVideoCallClosed();\n this.setState({\n rtcPanel: null\n });\n this.props.onCallHangup(topic, seq);\n }\n\n // sendImageAttachment sends the image bits inband as Drafty message.\n sendImageAttachment(caption, blob) {\n const mime = this.state.imagePreview.mime;\n const width = this.state.imagePreview.width;\n const height = this.state.imagePreview.height;\n const fname = this.state.imagePreview.name;\n\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = (this.props.tinode.getServerParam('maxMessageSize',\n MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024) | 0;\n\n if (blob.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(blob);\n\n // Make small preview to show while uploading.\n imageScaled(blob, IMAGE_PREVIEW_DIM, IMAGE_PREVIEW_DIM, -1, false)\n // Convert tiny image into base64 for serialization and previewing.\n .then(scaled => blobToBase64(scaled.blob))\n .then(b64 => {\n let msg = Drafty.insertImage(null, 0, {\n mime: mime,\n _tempPreview: b64.bits, // This preview will not be serialized.\n width: width,\n height: height,\n filename: fname,\n size: blob.size,\n urlPromise: uploadCompletionPromise\n });\n if (caption) {\n msg = Drafty.appendLineBreak(msg);\n msg = Drafty.append(msg, Drafty.parse(caption));\n }\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n }).catch((err) => {\n this.props.onError(err, 'err');\n });\n return;\n }\n\n // Upload the image if it's too big to be send inband.\n blobToBase64(blob)\n .then(b64 => {\n let msg = Drafty.insertImage(null, 0, {\n mime: b64.mime,\n preview: b64.bits, // Serializable preview\n width: width,\n height: height,\n filename: fname,\n size: blob.size\n });\n if (caption) {\n msg = Drafty.appendLineBreak(msg);\n msg = Drafty.append(msg, Drafty.parse(caption));\n }\n this.sendMessage(msg);\n });\n }\n\n // handleAttachImage method is called when [Attach image] button is clicked: launch image preview.\n handleAttachImage(file) {\n const maxExternAttachmentSize = this.props.tinode.getServerParam('maxFileUploadSize', MAX_EXTERN_ATTACHMENT_SIZE);\n\n // Get image dimensions and size, optionally scale it down.\n imageScaled(file, MAX_IMAGE_DIM, MAX_IMAGE_DIM, maxExternAttachmentSize, false)\n .then(scaled => {\n this.setState({imagePreview: {\n url: URL.createObjectURL(scaled.blob),\n blob: scaled.blob,\n name: scaled.name,\n width: scaled.width,\n height: scaled.height,\n size: scaled.blob.size,\n mime: scaled.mime\n }});\n }).catch(err => {\n this.props.onError(err, 'err');\n });\n }\n\n // sendAudioAttachment sends audio bits inband as Drafty message (no preview).\n sendAudioAttachment(url, preview, duration) {\n fetch(url)\n .then(result => result.blob())\n .then(blob => {\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = this.props.tinode.getServerParam('maxMessageSize', MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024;\n if (blob.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(blob);\n const msg = Drafty.appendAudio(null, {\n mime: blob.type,\n size: blob.size,\n duration: duration,\n preview: preview,\n urlPromise: uploadCompletionPromise\n });\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n } else {\n // Small enough to send inband.\n blobToBase64(blob)\n .then(b64 => {\n this.sendMessage(Drafty.appendAudio(null, {\n mime: b64.mime,\n size: blob.size,\n data: b64.bits,\n duration: duration,\n preview: preview,\n }))\n })\n }\n })\n .catch(err => {this.props.onError(err)});;\n }\n\n handleCancelUpload(seq, uploader) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n const found = topic.findMessage(seq);\n if (found) {\n found._cancelled = true;\n }\n uploader.cancel();\n }\n\n // seq: seq ID of the source message\n // context: message content.\n // senderId: UID of the sender of the source message.\n // senderName: full name of the sender of the original message.\n handlePickReply(seq, content, senderId, senderName) {\n this.setState({reply: null});\n\n if (!seq || !content) {\n return;\n }\n\n content = typeof content == 'string' ? Drafty.init(content) : content;\n if (Drafty.isValid(content)) {\n content = Drafty.replyContent(content, QUOTED_REPLY_LENGTH);\n } else {\n // /!\\ invalid content.\n content = Drafty.append(Drafty.init('\\u26A0 '),\n Drafty.wrapInto(this.props.intl.formatMessage(messages.invalid_content), 'EM'));\n }\n\n this.setState({\n reply: {\n content: Drafty.quote(senderName, senderId, content),\n seq: seq\n }\n });\n this.props.onCancelForwardMessage();\n }\n\n handleCancelReply() {\n this.setState({reply: null});\n this.props.onCancelForwardMessage();\n }\n\n handleQuoteClick(replyToSeq) {\n const ref = this.getOrCreateMessageRef(replyToSeq);\n if (ref && ref.current) {\n ref.current.scrollIntoView({block: \"center\", behavior: \"smooth\"});\n ref.current.classList.add('flash');\n setTimeout(() => { ref.current.classList.remove('flash') } , 1000);\n } else {\n console.error(\"Unresolved message ref\", replyToSeq);\n }\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n\n let component;\n if (this.props.hideSelf) {\n component = null;\n } else if (!this.state.topic) {\n component = (\n \n );\n } else {\n let component2;\n if (this.state.imagePreview) {\n // Preview image before sending.\n component2 = (\n \n );\n } else if (this.state.imagePostview) {\n // Expand received image.\n component2 = (\n \n );\n } else if (this.state.docPreview) {\n // Preview attachment before sending.\n component2 = (\n \n );\n } else if (this.state.rtcPanel) {\n component2 = (\n \n );\n } else {\n const topic = this.props.tinode.getTopic(this.state.topic);\n const isChannel = topic.isChannelType();\n const groupTopic = topic.isGroupType() && !isChannel;\n const icon_badges = [];\n if (topic.trusted) {\n if (topic.trusted.verified) {\n icon_badges.push({icon: 'verified', color: 'badge-inv'});\n }\n if (topic.trusted.staff) {\n icon_badges.push({icon: 'staff', color: 'badge-inv'});\n }\n if (topic.trusted.danger) {\n icon_badges.push({icon: 'dangerous', color: 'badge-inv'});\n }\n }\n\n const messageNodes = [];\n let previousFrom = null;\n let prevDate = null;\n let chatBoxClass = null;\n const dateFmt = new Intl.DateTimeFormat(this.props.intl.locale);\n topic.messages((msg, prev, next, i) => {\n let nextFrom = next ? (next.from || 'chan') : null;\n\n let sequence = 'single';\n let thisFrom = msg.from || 'chan';\n if (thisFrom == previousFrom) {\n if (thisFrom == nextFrom) {\n sequence = 'middle';\n } else {\n sequence = 'last';\n }\n } else if (thisFrom == nextFrom) {\n sequence = 'first';\n }\n previousFrom = thisFrom;\n\n const isReply = !(thisFrom == this.props.myUserId);\n const deliveryStatus = topic.msgStatus(msg, true);\n\n let userFrom = thisFrom, userName, userAvatar;\n const user = topic.userDesc(thisFrom);\n if (user && user.public) {\n userName = user.public.fn;\n userAvatar = makeImageUrl(user.public.photo);\n }\n chatBoxClass = groupTopic ? 'chat-box group' : 'chat-box';\n\n // Ref for this chat message.\n const ref = this.getOrCreateMessageRef(msg.seq);\n let replyToSeq = msg.head ? parseInt(msg.head.reply) : null;\n if (!replyToSeq || isNaN(replyToSeq)) {\n replyToSeq = null;\n }\n\n if (msg.hi) {\n // Deleted message.\n messageNodes.push(\n \n );\n } else {\n const thisDate = new Date(msg.ts);\n // This message was sent on a different date than the previous.\n if (!prevDate || prevDate.toDateString() != thisDate.toDateString()) {\n messageNodes.push(\n \n );\n prevDate = thisDate;\n }\n messageNodes.push(\n \n );\n }\n });\n\n let lastSeen = null;\n if (isChannel) {\n lastSeen = formatMessage(messages.channel);\n } else {\n const cont = this.props.tinode.getMeTopic().getContact(this.state.topic);\n if (cont && Tinode.isP2PTopicName(cont.topic)) {\n if (cont.online) {\n lastSeen = formatMessage(messages.online_now);\n } else if (cont.seen) {\n lastSeen = formatMessage(messages.last_seen) + \": \" +\n shortDateFormat(cont.seen.when, this.props.intl.locale);\n // TODO: also handle user agent in c.seen.ua\n }\n }\n }\n const avatar = this.state.avatar || true;\n const online = this.state.deleted ? null :\n this.props.online ? 'online' + (this.state.typingIndicator ? ' typing' : '') : 'offline';\n\n const titleClass = 'panel-title' + (this.state.deleted ? ' deleted' : '');\n\n component2 = (\n <>\n
\n {this.props.displayMobile ?\n {e.preventDefault(); this.props.onHideMessagesView();}}>\n arrow_back\n \n :\n null}\n
\n \n {!isChannel ? : null}\n
\n
\n
{\n this.state.title ||\n \n }
\n
{lastSeen}
\n
\n {groupTopic ?\n :\n
\n }\n \n
\n {this.props.displayMobile ?\n \n : null}\n \n
\n \n
\n
    \n {messageNodes}\n
\n
\n {!this.state.isReader ?\n
\n {this.state.readingBlocked ?\n
\n \n
\n : null }\n
\n : null }\n
\n {this.state.peerMessagingDisabled && !this.state.unconfirmed ?\n
\n block .\n
: null}\n {this.state.unconfirmed ?\n \n :\n }\n \n );\n }\n component =
{component2}
\n }\n return component;\n }\n};\n\nexport default injectIntl(MessagesView);\n","// Create new topic and invite users or send an invite.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport ContactList from '../widgets/contact-list.jsx';\nimport NewTopicById from '../widgets/new-topic-by-id.jsx';\nimport NewTopicGroup from '../widgets/new-topic-group.jsx';\nimport SearchContacts from '../widgets/search-contacts.jsx';\n\nimport HashNavigation from '../lib/navigation.js';\nimport { theCard } from '../lib/utils.js';\n\nconst messages = defineMessages({\n search_for_contacts: {\n id: \"search_for_contacts\",\n defaultMessage: \"Use search to find contacts\",\n description: \"Text shown in contacts view when user entered no search query.\"\n },\n search_no_results: {\n id: \"search_no_results\",\n defaultMessage: \"Search returned no results\",\n description: \"Text shown in contacts view when query returned no results.\"\n },\n search_placeholder: {\n id: \"search_placeholder\",\n defaultMessage: \"List like email:alice@example.com, tel:17025550003...\",\n description: \"Placeholder in contacts search field\"\n },\n});\n\nclass NewTopicView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n tabSelected: 'find',\n searchQuery: null\n };\n\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleSearchContacts = this.handleSearchContacts.bind(this);\n this.handleSearchResultSelected = this.handleSearchResultSelected.bind(this);\n this.handleNewGroupSubmit = this.handleNewGroupSubmit.bind(this);\n this.handleGroupByID = this.handleGroupByID.bind(this);\n }\n\n componentDidMount() {\n this.props.onInitFind();\n }\n\n handleTabClick(e) {\n e.preventDefault();\n HashNavigation.navigateTo(HashNavigation.addUrlParam(window.location.hash, 'tab', e.currentTarget.dataset.id));\n this.setState({tabSelected: e.currentTarget.dataset.id});\n }\n\n handleSearchContacts(query) {\n this.props.onSearchContacts(query);\n this.setState({searchQuery: Tinode.isNullValue(query) ? null : query});\n }\n\n handleSearchResultSelected(name) {\n if (this.state.tabSelected == 'find') {\n HashNavigation.navigateTo(HashNavigation.removeUrlParam(window.location.hash, 'tab'));\n this.props.onCreateTopic(name);\n }\n }\n\n handleNewGroupSubmit(name, description, dataUrl, priv, tags, isChannel) {\n HashNavigation.navigateTo(HashNavigation.removeUrlParam(window.location.hash, 'tab'));\n this.props.onCreateTopic(undefined,\n {public: theCard(name, dataUrl, null, description), private: priv, tags: tags}, isChannel);\n }\n\n handleGroupByID(topicName) {\n HashNavigation.navigateTo(HashNavigation.removeUrlParam(window.location.hash, 'tab'));\n this.props.onCreateTopic(topicName);\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n const no_contacts_placeholder = formatMessage(this.state.searchQuery ?\n messages.search_no_results : messages.search_for_contacts);\n const search_placeholder = formatMessage(messages.search_placeholder);\n return (\n
\n \n {this.state.tabSelected === 'grp' ?\n :\n this.state.tabSelected === 'byid' ?\n :\n
\n \n \n
}\n
\n );\n }\n};\n\nexport default injectIntl(NewTopicView);\n","// A password reset form.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport VisiblePassword from '../widgets/visible-password.jsx';\n\nimport HashNavigation from '../lib/navigation.js';\n\nexport default class PasswordResetView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n email: '',\n password: '',\n sent: false\n };\n\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleEmailChange = this.handleEmailChange.bind(this);\n this.handlePasswordChange = this.handlePasswordChange.bind(this);\n }\n\n componentDidMount() {\n const parsed = HashNavigation.parseUrlHash(window.location.hash);\n this.setState({token: parsed.params.token, scheme: parsed.params.scheme});\n }\n\n handleSubmit(e) {\n e.preventDefault();\n if (this.state.token) {\n this.props.onReset(this.state.scheme, this.state.password.trim(), this.state.token);\n } else if (this.state.sent) {\n this.props.onCancel();\n } else {\n const email = this.state.email.trim();\n this.setState({email: email});\n this.props.onRequest('email', email).then(() => {\n this.setState({sent: true});\n });\n }\n }\n\n handleEmailChange(e) {\n this.setState({email: e.target.value});\n }\n\n handlePasswordChange(e) {\n this.setState({password: e.target.value});\n }\n\n render() {\n return (\n
\n {(this.state.token && this.state.scheme) ?\n <>\n {\n (placeholder) => \n }\n : this.state.sent ?\n <>\n
\n
task_alt
\n
\n
{this.state.email} }}\n description=\"Notification that the email with password reset instructions has been sent\" />
\n \n :\n <>\n \n {\n (placeholder) => \n }\n \n }\n
\n \n
\n
\n );\n }\n}\n","// Tinode config panel.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport CheckBox from '../widgets/checkbox.jsx';\n\nimport HostSelector from '../widgets/host-selector.jsx';\n\nexport default class SettingsView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n transport: props.transport || 'def',\n serverAddress: props.serverAddress,\n secureConnection: props.secureConnection,\n };\n\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleTransportSelected = this.handleTransportSelected.bind(this);\n this.handleServerAddressChange = this.handleServerAddressChange.bind(this);\n this.handleToggleSecure = this.handleToggleSecure.bind(this);\n }\n\n handleSubmit(e) {\n e.preventDefault();\n this.props.onUpdate({\n transport: this.state.transport,\n serverAddress: this.state.serverAddress,\n secureConnection: this.state.secureConnection,\n });\n }\n\n handleTransportSelected(e) {\n this.setState({transport: e.currentTarget.value});\n }\n\n handleServerAddressChange(name) {\n this.setState({serverAddress: name});\n }\n\n handleToggleSecure(e) {\n this.setState({secureConnection: !this.state.secureConnection});\n }\n\n render() {\n const names = {def: \"default\", ws: \"websocket\", lp: \"long polling\"};\n const transportOptions = [];\n ['def', 'ws', 'lp'].map((item) => {\n const id = 'transport-' + item;\n const name = names[item];\n transportOptions.push(\n
  • \n \n \n
  • \n );\n });\n\n return (\n
    \n
    \n \n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n
      \n {transportOptions}\n
    \n
    \n
    \n \n
    \n \n );\n }\n};\n","import React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport ErrorPanel from '../widgets/error-panel.jsx';\nimport LoadSpinner from '../widgets/load-spinner.jsx';\nimport SideNavbar from '../widgets/side-navbar.jsx';\nimport TopicCommon from '../widgets/topic-common.jsx';\n\nimport AccountSettingsView from './account-settings-view.jsx';\nimport ContactsView from './contacts-view.jsx';\nimport CreateAccountView from './create-account-view.jsx';\nimport AccNotificationsView from './acc-notifications-view.jsx';\nimport AccSecurityView from './acc-security-view.jsx';\nimport AccSupportView from './acc-support-view.jsx';\nimport LoginView from './login-view.jsx';\nimport NewTopicView from './new-topic-view.jsx';\nimport PasswordResetView from './password-reset-view.jsx';\nimport SettingsView from './settings-view.jsx';\nimport ValidationView from './validation-view.jsx';\n\n// Panel titles for translation.\nconst messages = defineMessages({\n login: {\n id: 'sidepanel_title_login',\n description: 'Sidepanel title for LoginView.',\n defaultMessage: 'Sign In'\n },\n register: {\n id: 'sidepanel_title_register',\n description: 'Sidepanel title for CreateAccountView.',\n defaultMessage: 'Create Account'\n },\n settings: {\n id: 'sidepanel_title_settings',\n description: 'Sidepanel title for SettingsView.',\n defaultMessage: 'Settings'\n },\n edit: {\n id: 'sidepanel_title_account_settings',\n description: 'Sidepanel title for AccountSettingsView.',\n defaultMessage: 'Account Settings'\n },\n general: {\n id: 'panel_title_general',\n description: 'Title for TopicCommon.',\n defaultMessage: 'General'\n },\n security: {\n id: 'panel_title_security',\n description: 'Title for TopicSecirity and AccSecurity.',\n defaultMessage: 'Security'\n },\n crop: {\n id: 'panel_title_crop',\n description: 'Title for AvatarCropView.',\n defaultMessage: 'Drag to Adjust'\n },\n notif: {\n id: 'sidepanel_title_acc_notifications',\n description: 'Sidepanel title for AccNotificationsView.',\n defaultMessage: 'Notifications'\n },\n support: {\n id: 'sidepanel_title_acc_support',\n description: 'Sidepanel title for AccSupportView.',\n defaultMessage: 'Support'\n },\n newtpk: {\n id: 'sidepanel_title_newtpk',\n description: 'Sidepanel title for NewTopicView.',\n defaultMessage: 'Start New Chat'\n },\n cred: {\n id: 'sidepanel_title_cred',\n description: 'Sidepanel title for ValidationView.',\n defaultMessage: 'Confirm Credentials'\n },\n reset: {\n id: 'sidepanel_title_reset',\n description: 'Sidepanel title for PasswordResetView.',\n defaultMessage: 'Reset Password'\n },\n archive: {\n id: 'sidepanel_title_archive',\n description: 'Sidepanel title for ContactsView-Archive.',\n defaultMessage: 'Archived Chats'\n },\n blocked: {\n id: 'sidepanel_title_blocked',\n description: 'Sidepanel title for ContactsView-Blocked.',\n defaultMessage: 'Blocked Chats'\n }\n});\n\nclass SidepanelView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleNewTopic = this.handleNewTopic.bind(this);\n }\n\n handleNewTopic() {\n this.props.onNavigate('newtpk');\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n const view = this.props.state || (this.props.myUserId ? 'contacts' : 'login');\n\n let title, avatar, badges;\n if (view == 'contacts') {\n title = this.props.title;\n avatar = this.props.avatar ? this.props.avatar : true;\n badges = this.props.trustedBadges;\n } else {\n title = formatMessage(messages[view]);\n avatar = false;\n badges = null;\n }\n\n let onCancel;\n if (['login', 'contacts'].indexOf(view) == -1) {\n onCancel = this.props.onCancel;\n }\n\n return (\n
    \n \n\n \n\n \n\n {view === 'login' ?\n :\n\n view === 'register' ?\n :\n\n view === 'settings' ?\n :\n\n view === 'edit' ?\n :\n\n (view === 'general' || view === 'crop') ?\n :\n\n view === 'notif' ?\n :\n\n view === 'security' ?\n :\n\n view === 'support' ?\n :\n\n (view === 'contacts' || view == 'archive' || view == 'blocked') ?\n :\n\n view === 'newtpk' ?\n :\n\n view === 'cred' ?\n :\n\n view === 'reset' ?\n :\n null}\n
    \n );\n }\n};\n\nexport default injectIntl(SidepanelView);\n","// The top-level class to hold all functionality together.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { initializeApp as firebaseInitApp } from 'firebase/app';\nimport { getMessaging as firebaseGetMessaging, getToken as firebaseGetToken,\n deleteToken as firebaseDelToken, onMessage as firebaseOnMessage } from 'firebase/messaging';\n\nimport { Drafty, Tinode } from 'tinode-sdk';\n\nimport Alert from '../widgets/alert.jsx';\nimport ContextMenu from '../widgets/context-menu.jsx';\nimport ForwardDialog from '../widgets/forward-dialog.jsx';\nimport CallIncoming from '../widgets/call-incoming.jsx';\n\nimport InfoView from './info-view.jsx';\nimport MessagesView from './messages-view.jsx';\nimport SidepanelView from './sidepanel-view.jsx';\n\nimport { API_KEY, APP_NAME, DEFAULT_P2P_ACCESS_MODE, FORWARDED_PREVIEW_LENGTH, LOGGING_ENABLED,\n MEDIA_BREAKPOINT } from '../config.js';\nimport { CALL_STATE_NONE, CALL_STATE_OUTGOING_INITATED,\n CALL_STATE_INCOMING_RECEIVED, CALL_STATE_IN_PROGRESS,\n CALL_HEAD_STARTED } from '../constants.js';\nimport { PACKAGE_VERSION } from '../version.js';\nimport { base64ReEncode, makeImageUrl } from '../lib/blob-helpers.js';\nimport { detectServerAddress, isLocalHost, isSecureConnection } from '../lib/host-name.js';\nimport LocalStorageUtil from '../lib/local-storage.js';\nimport HashNavigation from '../lib/navigation.js';\nimport { secondsToTime } from '../lib/strformat.js'\nimport { updateFavicon } from '../lib/utils.js';\n\n// Sound to play on message received.\nconst POP_SOUND = new Audio('audio/msg.m4a');\n\nconst messages = defineMessages({\n reconnect_countdown: {\n id: 'reconnect_countdown',\n defaultMessage: 'Disconnected. Reconnecting in {seconds}…',\n description: 'Message shown when an app update is available.'\n },\n reconnect_now: {\n id: 'reconnect_now',\n defaultMessage: 'Try now',\n description: 'Prompt for reconnecting now'\n },\n push_init_failed: {\n id: 'push_init_failed',\n defaultMessage: 'Failed to initialize push notifications',\n description: 'Error message when push notifications have failed to initialize.'\n },\n invalid_security_token: {\n id: 'invalid_security_token',\n defaultMessage: 'Invalid security token',\n description: 'Error message when resetting password.'\n },\n no_connection: {\n id: 'no_connection',\n defaultMessage: 'No connection',\n description: 'Warning that the user is offline.'\n },\n code_doesnot_match: {\n id: 'code_doesnot_match',\n defaultMessage: 'Code does not match',\n description: 'Error message when the credential validation code is incorrect.'\n },\n menu_item_info: {\n id: 'menu_item_info',\n defaultMessage: 'Info',\n description: 'Show extended topic information'\n },\n menu_item_video_call: {\n id: 'menu_item_video_call',\n defaultMessage: 'Video call',\n description: 'Start video call'\n },\n cred_confirmed_successfully: {\n id: 'cred_confirmed_successfully',\n defaultMessage: 'Confirmed successfully',\n description: 'Message explaining that the credential was successfully validated.'\n }\n});\n\nclass TinodeWeb extends React.Component {\n constructor(props) {\n super(props);\n\n this.selfRef = React.createRef();\n\n this.state = this.getBlankState();\n\n this.handleResize = this.handleResize.bind(this);\n this.handleHashRoute = this.handleHashRoute.bind(this);\n this.handleOnline = this.handleOnline.bind(this);\n this.checkForAppUpdate = this.checkForAppUpdate.bind(this);\n this.handleVisibilityEvent = this.handleVisibilityEvent.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleLoginRequest = this.handleLoginRequest.bind(this);\n this.handlePersistenceChange = this.handlePersistenceChange.bind(this);\n this.handleConnected = this.handleConnected.bind(this);\n this.handleAutoreconnectIteration = this.handleAutoreconnectIteration.bind(this);\n this.doLogin = this.doLogin.bind(this);\n this.handleLoginSuccessful = this.handleLoginSuccessful.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.tnMeMetaDesc = this.tnMeMetaDesc.bind(this);\n this.tnMeContactUpdate = this.tnMeContactUpdate.bind(this);\n this.tnMeSubsUpdated = this.tnMeSubsUpdated.bind(this);\n this.resetContactList = this.resetContactList.bind(this);\n this.tnInitFind = this.tnInitFind.bind(this);\n this.tnFndSubsUpdated = this.tnFndSubsUpdated.bind(this);\n this.handleSearchContacts = this.handleSearchContacts.bind(this);\n this.handleTopicSelected = this.handleTopicSelected.bind(this);\n this.handleHideMessagesView = this.handleHideMessagesView.bind(this);\n this.handleSendMessage = this.handleSendMessage.bind(this);\n this.handleNewChatInvitation = this.handleNewChatInvitation.bind(this);\n this.handleNewAccount = this.handleNewAccount.bind(this);\n this.handleNewAccountRequest = this.handleNewAccountRequest.bind(this);\n this.handleUpdatePasswordRequest = this.handleUpdatePasswordRequest.bind(this);\n this.handleUpdateAccountTagsRequest = this.handleUpdateAccountTagsRequest.bind(this);\n this.handleToggleIncognitoMode = this.handleToggleIncognitoMode.bind(this);\n this.handleSettings = this.handleSettings.bind(this);\n this.handleGlobalSettings = this.handleGlobalSettings.bind(this);\n this.handleShowArchive = this.handleShowArchive.bind(this);\n this.handleShowBlocked = this.handleShowBlocked.bind(this);\n this.handleToggleMessageSounds = this.handleToggleMessageSounds.bind(this);\n this.handleCredAdd = this.handleCredAdd.bind(this);\n this.handleCredDelete = this.handleCredDelete.bind(this);\n this.handleCredConfirm = this.handleCredConfirm.bind(this);\n this.initFCMessaging = this.initFCMessaging.bind(this);\n this.toggleFCMToken = this.toggleFCMToken.bind(this);\n this.handlePushMessage = this.handlePushMessage.bind(this);\n this.handleSidepanelCancel = this.handleSidepanelCancel.bind(this);\n this.handleStartTopicRequest = this.handleStartTopicRequest.bind(this);\n this.handleNewTopicCreated = this.handleNewTopicCreated.bind(this);\n this.handleTopicUpdateRequest = this.handleTopicUpdateRequest.bind(this);\n this.handleUnarchive = this.handleUnarchive.bind(this);\n this.handleChangePermissions = this.handleChangePermissions.bind(this);\n this.handleTagsUpdateRequest = this.handleTagsUpdateRequest.bind(this);\n this.handleLogout = this.handleLogout.bind(this);\n this.handleDeleteAccount = this.handleDeleteAccount.bind(this);\n this.handleDeleteTopicRequest = this.handleDeleteTopicRequest.bind(this);\n this.handleDeleteMessagesRequest = this.handleDeleteMessagesRequest.bind(this);\n this.handleLeaveUnsubRequest = this.handleLeaveUnsubRequest.bind(this);\n this.handleBlockTopicRequest = this.handleBlockTopicRequest.bind(this);\n this.handleReportTopic = this.handleReportTopic.bind(this);\n this.handleShowContextMenu = this.handleShowContextMenu.bind(this);\n this.defaultTopicContextMenu = this.defaultTopicContextMenu.bind(this);\n this.handleHideContextMenu = this.handleHideContextMenu.bind(this);\n this.handleShowAlert = this.handleShowAlert.bind(this);\n this.handleShowInfoView = this.handleShowInfoView.bind(this);\n this.handleMemberUpdateRequest = this.handleMemberUpdateRequest.bind(this);\n this.handleValidateCredentialsRequest = this.handleValidateCredentialsRequest.bind(this);\n this.handlePasswordResetRequest = this.handlePasswordResetRequest.bind(this);\n this.handleResetPassword = this.handleResetPassword.bind(this);\n this.handleContextMenuAction = this.handleContextMenuAction.bind(this);\n\n this.handleShowForwardDialog = this.handleShowForwardDialog.bind(this);\n this.handleHideForwardDialog = this.handleHideForwardDialog.bind(this);\n\n this.handleStartVideoCall = this.handleStartVideoCall.bind(this);\n this.handleInfoMessage = this.handleInfoMessage.bind(this);\n this.handleDataMessage = this.handleDataMessage.bind(this);\n this.handleCallClose = this.handleCallClose.bind(this);\n\n this.handleCallInvite = this.handleCallInvite.bind(this);\n this.handleCallRinging = this.handleCallRinging.bind(this);\n this.handleCallHangup = this.handleCallHangup.bind(this);\n this.handleCallSendOffer = this.handleCallSendOffer.bind(this);\n this.handleCallIceCandidate = this.handleCallIceCandidate.bind(this);\n this.handleCallSendAnswer = this.handleCallSendAnswer.bind(this);\n\n this.handleCallAcceptCall = this.handleCallAcceptCall.bind(this);\n\n this.sendMessageToTopic = this.sendMessageToTopic.bind(this);\n\n // FIXME: this is unused.\n this.callTimeoutTimer = null;\n }\n\n getBlankState() {\n const settings = LocalStorageUtil.getObject('settings') || {};\n const persist = !!LocalStorageUtil.getObject('keep-logged-in');\n\n return {\n connected: false,\n // Connected and subscribed to 'me'\n ready: false,\n // Try to re-login on new connection.\n autoLogin: false,\n transport: settings.transport || null,\n serverAddress: settings.serverAddress || detectServerAddress(),\n secureConnection: settings.secureConnection === undefined ?\n isSecureConnection() : settings.secureConnection,\n serverVersion: \"no connection\",\n // \"On\" is the default, so saving the \"off\" state.\n messageSounds: !settings.messageSoundsOff,\n incognitoMode: false,\n // Persistent request to enable alerts.\n desktopAlerts: persist && !!settings.desktopAlerts,\n // Enable / disable checkbox.\n desktopAlertsEnabled: (isSecureConnection() || isLocalHost()) &&\n (typeof firebaseInitApp != 'undefined') && (typeof navigator != 'undefined') &&\n (typeof FIREBASE_INIT != 'undefined'),\n firebaseToken: persist ? LocalStorageUtil.getObject('firebase-token') : null,\n\n applicationVisible: !document.hidden,\n\n errorText: '',\n errorLevel: null,\n errorAction: undefined,\n errorActionText: null,\n\n sidePanelSelected: 'login',\n sidePanelTitle: null,\n sidePanelAvatar: null,\n myTrustedBadges: [],\n loadSpinnerVisible: false,\n\n login: '',\n password: '',\n persist: persist,\n myUserId: null,\n liveConnection: navigator.onLine,\n topicSelected: '',\n topicSelectedOnline: false,\n topicSelectedAcs: null,\n newTopicParams: null,\n loginDisabled: false,\n displayMobile: (window.innerWidth <= MEDIA_BREAKPOINT),\n infoPanel: undefined,\n mobilePanel: 'sidepanel',\n\n // Video calls.\n callTopic: undefined,\n callState: CALL_STATE_NONE,\n // If true, call state should be transitioned to CALL_STATE_IN_PROGRESS upon\n // switching to the call topic.\n callShouldStart: false,\n\n contextMenuVisible: false,\n contextMenuBounds: null,\n contextMenuClickAt: null,\n contextMenuParams: null,\n contextMenuItems: [],\n\n forwardDialogVisible: false,\n forwardMessage: null,\n\n // Modal alert dialog.\n alertVisible: false,\n alertParams: {},\n\n // Chats as shown in the ContactsView\n chatList: [],\n // Contacts returned by a search query.\n searchResults: [],\n // Merged results of a search query and p2p chats.\n searchableContacts: [],\n // Credential validation.\n credMethod: undefined,\n credCode: undefined,\n credToken: undefined,\n // Topic to go to after login.\n requestedTopic: undefined\n };\n }\n\n componentDidMount() {\n window.addEventListener('resize', this.handleResize);\n window.addEventListener('online', (e) => { this.handleOnline(true); });\n window.addEventListener('offline', (e) => { this.handleOnline(false); });\n window.addEventListener('hashchange', this.handleHashRoute);\n\n // Process background notifications from the service worker.\n if (typeof BroadcastChannel == 'function') {\n const serviceWorkerChannel = new BroadcastChannel('tinode-sw');\n serviceWorkerChannel.addEventListener('message', this.handlePushMessage);\n } else {\n // Safari is broken by design.\n console.warn(\"Your browser does not support BroadcastChannel. Some features will not be available\");\n }\n\n // Window/tab visible or invisible for pausing timers.\n document.addEventListener('visibilitychange', this.handleVisibilityEvent);\n\n this.setState({\n viewportWidth: document.documentElement.clientWidth,\n viewportHeight: document.documentElement.clientHeight\n });\n\n new Promise((resolve, reject) => {\n this.tinode = TinodeWeb.tnSetup(this.state.serverAddress, isSecureConnection(), this.state.transport,\n this.props.intl.locale, this.state.persist, resolve);\n this.tinode.onConnect = this.handleConnected;\n this.tinode.onDisconnect = this.handleDisconnect;\n this.tinode.onAutoreconnectIteration = this.handleAutoreconnectIteration;\n this.tinode.onInfoMessage = this.handleInfoMessage;\n this.tinode.onDataMessage = this.handleDataMessage;\n }).then(_ => {\n // Initialize desktop alerts.\n if (this.state.desktopAlertsEnabled) {\n this.initFCMessaging().then(_ => {\n if (this.state.desktopAlerts) {\n this.tinode.setDeviceToken(this.state.firebaseToken);\n }\n }).catch(() => {\n // do nothing: handled earlier.\n // catch needed to pervent unnecessary logging of error.\n });\n }\n\n // Parse and save the hash navigation params.\n const parsedNav = HashNavigation.parseUrlHash(window.location.hash);\n\n // Read contacts from cache.\n this.resetContactList();\n\n const token = this.state.persist ? LocalStorageUtil.getObject('auth-token') : undefined;\n if (token) {\n this.setState({autoLogin: true});\n\n // When reading from storage, date is returned as string.\n token.expires = new Date(token.expires);\n this.tinode.setAuthToken(token);\n this.tinode.connect().catch((err) => {\n // Socket error\n this.handleError(err.message, 'err');\n });\n }\n\n this.readTimer = null;\n this.readTimerCallback = null;\n\n // Maybe navigate to home screen.\n if (!['cred', 'reset', 'register'].includes(parsedNav.path[0])) {\n // Save possible topic name.\n this.setState({requestedTopic: parsedNav.path[1]});\n const path = parsedNav.params && parsedNav.params.cred_done ?\n HashNavigation.addUrlParam('', 'cred_done', parsedNav.params.cred_done):\n '';\n HashNavigation.navigateTo(path);\n } else {\n this.handleHashRoute();\n }\n });\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize);\n window.removeEventListener('hashchange', this.handleHashRoute);\n document.removeEventListener('visibilitychange', this.handleVisibilityEvent);\n }\n\n // Setup transport (usually websocket) and server address. This will terminate connection with the server.\n static tnSetup(serverAddress, secureConnection, transport, locale, persistentCache, onSetupCompleted) {\n const tinode = new Tinode({appName: APP_NAME, host: serverAddress, apiKey: API_KEY, transport: transport,\n secure: secureConnection, persist: persistentCache}, onSetupCompleted);\n tinode.setHumanLanguage(locale);\n tinode.enableLogging(LOGGING_ENABLED, true);\n return tinode;\n }\n\n // Tinode received a push notification from the server.\n handlePushMessage(payload) {\n this.tinode.oobNotification(payload.data || {});\n }\n\n initFCMessaging() {\n const {formatMessage, locale} = this.props.intl;\n const onError = (msg, err) => {\n console.error(msg, err);\n this.handleError(formatMessage(messages.push_init_failed), 'err');\n this.setState({desktopAlertsEnabled: false, firebaseToken: null});\n LocalStorageUtil.updateObject('settings', {desktopAlerts: false});\n }\n\n try {\n this.fcm = firebaseGetMessaging(firebaseInitApp(FIREBASE_INIT, APP_NAME));\n return navigator.serviceWorker.register('/service-worker.js').then((reg) => {\n this.checkForAppUpdate(reg);\n reg.active.postMessage(JSON.stringify({locale: locale, version: PACKAGE_VERSION}));\n return reg;\n }).then((reg) => {\n // Request token.\n return TinodeWeb.requestFCMToken(this.fcm, reg);\n }).then((token) => {\n const persist = LocalStorageUtil.getObject('keep-logged-in');\n if (token != this.state.firebaseToken) {\n this.tinode.setDeviceToken(token);\n if (persist) {\n LocalStorageUtil.setObject('firebase-token', token);\n }\n }\n this.setState({firebaseToken: token, desktopAlerts: true});\n if (persist) {\n LocalStorageUtil.updateObject('settings', {desktopAlerts: true});\n }\n\n // Handhe FCM pushes\n // (a) for channels always,\n // (b) pushes when the app is in foreground but has no focus.\n firebaseOnMessage(this.fcm, (payload) => { this.handlePushMessage(payload); });\n }).catch((err) => {\n // SW registration or FCM has failed :(\n onError(err);\n throw err;\n });\n } catch (err) {\n onError(err);\n return Promise.reject(err);\n }\n }\n\n // Google's FCM API is idiotic.\n static requestFCMToken(fcm, sw) {\n return firebaseGetToken(fcm, {\n serviceWorkerRegistration: sw,\n vapidKey: FIREBASE_INIT.messagingVapidKey\n }).then((token) => {\n if (token) {\n return token;\n } else {\n // Try to request permissions.\n return Notification.requestPermission().then((permission) => {\n if (permission === 'granted') {\n return firebaseGetToken(fcm, {\n serviceWorkerRegistration: reg,\n vapidKey: FIREBASE_INIT.messagingVapidKey\n }).then((token) => {\n if (token) {\n return token;\n } else {\n throw new Error(\"Failed to initialize notifications\");\n }\n });\n } else {\n throw new Error(\"No permission to send notifications: \" + permission);\n }\n });\n }\n });\n }\n\n handleResize() {\n const mobile = document.documentElement.clientWidth <= MEDIA_BREAKPOINT;\n this.setState({\n viewportWidth: document.documentElement.clientWidth,\n viewportHeight: document.documentElement.clientHeight\n });\n if (this.state.displayMobile != mobile) {\n this.setState({displayMobile: mobile});\n }\n }\n\n // Check if a newer version of TinodeWeb app is available at the server.\n checkForAppUpdate(reg) {\n reg.onupdatefound = () => {\n const installingWorker = reg.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state == 'installed' && navigator.serviceWorker.controller) {\n const msg = <>\n \n \n .;\n this.handleError(msg, 'info');\n }\n }\n }\n }\n\n // Handle for hash navigation (hashchange) event: update state.\n handleHashRoute() {\n const hash = HashNavigation.parseUrlHash(window.location.hash);\n // Start with panel parameters.\n const newState = {\n infoPanel: hash.params.info,\n newTopicTabSelected: hash.params.tab\n };\n\n if (hash.path && hash.path.length > 0) {\n // Left-side panel selector.\n if (['register','settings','edit','notif','security','support','general','crop',\n 'cred','reset','newtpk','archive','blocked','contacts',''].includes(hash.path[0])) {\n newState.sidePanelSelected = hash.path[0];\n } else {\n console.warn(\"Unknown sidepanel view\", hash.path[0]);\n }\n\n // Topic for MessagesView selector.\n let topicName = hash.path[1] || null;\n if (topicName != this.state.topicSelected) {\n if (!Tinode.topicType(topicName)) {\n // Clear invalid topic name.\n topicName = null;\n }\n Object.assign(newState, {\n topicSelected: topicName,\n topicSelectedAcs: this.tinode.getTopicAccessMode(topicName)\n });\n }\n } else {\n // Empty hashpath\n Object.assign(newState, {sidePanelSelected: '', topicSelected: null});\n }\n\n // Save credential validation parameters, if available.\n if (hash.params.method) {\n newState.credMethod = hash.params.method;\n }\n if (hash.params.code) {\n newState.credCode = hash.params.code;\n }\n if (hash.params.token) {\n newState.credToken = hash.params.token;\n }\n\n // Show a message if validation was successful.\n if (hash.params.cred_done) {\n Object.assign(newState,\n TinodeWeb.stateForError(this.props.intl.formatMessage(messages.cred_confirmed_successfully), 'info'));\n }\n\n this.setState(newState);\n }\n\n handleOnline(online) {\n if (online) {\n this.handleError();\n clearInterval(this.reconnectCountdown);\n this.tinode.reconnect();\n } else {\n this.handleError(this.props.intl.formatMessage(messages.no_connection), 'warn');\n }\n this.setState({liveConnection: online});\n }\n\n handleVisibilityEvent() {\n this.setState({applicationVisible: !document.hidden});\n }\n\n static stateForError(err, level, action, actionText) {\n return {\n errorText: err,\n errorLevel: level,\n errorAction: action,\n errorActionText: actionText,\n callShouldStart: false,\n };\n }\n\n handleError(err, level, action, actionText) {\n this.setState(TinodeWeb.stateForError(err, level, action, actionText));\n }\n\n // User clicked Login button in the side panel.\n handleLoginRequest(login, password) {\n this.setState({\n loginDisabled: true,\n login: login,\n password: password,\n loadSpinnerVisible: true,\n autoLogin: true\n });\n this.handleError('', null);\n\n if (this.tinode.isConnected()) {\n this.doLogin(login, password, null, {meth: this.state.credMethod, resp: this.state.credCode});\n } else {\n this.tinode.connect().catch((err) => {\n // Socket error\n this.setState({loginDisabled: false, autoLogin: false, loadSpinnerVisible: false});\n this.handleError(err.message, 'err');\n });\n }\n }\n\n // Enable or disable saving the password and IndexedDB.\n handlePersistenceChange(persist) {\n if (persist) {\n this.tinode.initStorage().then(() => {\n LocalStorageUtil.setObject('keep-logged-in', true);\n this.setState({persist: true});\n });\n } else {\n this.tinode.clearStorage().then(() => {\n LocalStorageUtil.setObject('keep-logged-in', false);\n this.setState({persist: false});\n });\n }\n }\n\n // Connection succeeded.\n handleConnected() {\n // Just to be sure.\n clearInterval(this.reconnectCountdown);\n this.handleError();\n\n const params = this.tinode.getServerInfo();\n this.setState({\n serverVersion: params.ver + ' ' + (params.build ? params.build : 'none')\n });\n\n if (this.state.autoLogin) {\n this.doLogin(this.state.login, this.state.password, null,\n {meth: this.state.credMethod, resp: this.state.credCode});\n }\n }\n\n // Called for each auto-reconnect iteration.\n handleAutoreconnectIteration(sec, prom) {\n clearInterval(this.reconnectCountdown);\n\n if (sec < 0) {\n // Clear error\n this.handleError();\n return;\n }\n\n if (prom) {\n // Reconnecting now\n prom.then(_ => {\n // Reconnected: clear error\n this.handleError();\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n return;\n }\n\n const {formatMessage} = this.props.intl;\n let count = sec / 1000;\n count = count | count;\n this.reconnectCountdown = setInterval(_ => {\n if (count < -10) {\n // Count could go to negative if computer woke up from sleep.\n clearInterval(this.reconnectCountdown);\n this.tinode.reconnect();\n return;\n }\n\n const fmtTime = (count > 99) ? secondsToTime(count) : count;\n this.handleError(\n formatMessage(messages.reconnect_countdown, {seconds: fmtTime}),\n 'warn',\n _ => {\n clearInterval(this.reconnectCountdown);\n this.tinode.reconnect();\n },\n formatMessage(messages.reconnect_now)\n );\n count -= 1;\n }, 1000);\n }\n\n // Connection lost\n handleDisconnect(err) {\n this.setState({\n connected: false,\n ready: false,\n topicSelectedOnline: false,\n errorText: err && err.message ? err.message : \"Disconnected\",\n errorLevel: err && err.message ? 'err' : 'warn',\n loginDisabled: false,\n contextMenuVisible: false,\n forwardDialogVisible: false,\n serverVersion: \"no connection\"\n });\n }\n\n doLogin(login, password, tmpToken, cred) {\n if (this.tinode.isAuthenticated()) {\n // Already logged in. Go to default screen.\n HashNavigation.navigateTo('');\n return;\n }\n\n let token = tmpToken || (this.tinode.getAuthToken() || {}).token;\n if (!(login && password) && !token) {\n // No login credentials provided.\n // Make sure we are on the login page.\n HashNavigation.navigateTo('');\n this.setState({loginDisabled: false});\n return;\n }\n\n // Sanitize and package credentail.\n cred = Tinode.credential(cred);\n // May be disconnected.\n let connectionPromise = this.tinode.isConnected() ? Promise.resolve() : this.tinode.connect();\n // Try to login with login/password. If they are not available, try token; if no token, ask for login/password.\n let loginPromise;\n if (login && password) {\n token = null;\n this.setState({password: null});\n loginPromise = connectionPromise.then(_ => this.tinode.loginBasic(login, password, cred));\n } else {\n loginPromise = connectionPromise.then(_ => this.tinode.loginToken(token, cred));\n }\n\n loginPromise.then((ctrl) => {\n if (ctrl.code >= 300 && ctrl.text === 'validate credentials') {\n this.setState({loadSpinnerVisible: false});\n if (cred) {\n this.handleError(this.props.intl.formatMessage(messages.code_doesnot_match), 'warn');\n }\n TinodeWeb.navigateToCredentialsView(ctrl.params);\n } else {\n this.handleLoginSuccessful();\n }\n }).catch((err) => {\n // Connection or login failed, report error.\n this.setState({\n loginDisabled: false,\n credMethod: undefined,\n credCode: undefined,\n loadSpinnerVisible: false,\n autoLogin: false\n });\n this.handleError(err.message, 'err');\n console.warn(\"Login failed\", err);\n if (token) {\n this.handleLogout();\n }\n HashNavigation.navigateTo('');\n });\n }\n\n static navigateToCredentialsView(params) {\n const parsed = HashNavigation.parseUrlHash(window.location.hash);\n parsed.path[0] = 'cred';\n parsed.params['method'] = params.cred[0];\n parsed.params['token'] = params.token;\n HashNavigation.navigateTo(HashNavigation.composeUrlHash(parsed.path, parsed.params));\n }\n\n handleLoginSuccessful() {\n this.handleError();\n\n // Refresh authentication token.\n if (LocalStorageUtil.getObject('keep-logged-in')) {\n LocalStorageUtil.setObject('auth-token', this.tinode.getAuthToken());\n }\n\n const goToTopic = this.state.requestedTopic;\n // Logged in fine, subscribe to 'me' attaching callbacks from the contacts view.\n const me = this.tinode.getMeTopic();\n me.onMetaDesc = this.tnMeMetaDesc;\n me.onContactUpdate = this.tnMeContactUpdate;\n me.onSubsUpdated = this.tnMeSubsUpdated;\n this.setState({\n connected: true,\n credMethod: undefined,\n credCode: undefined,\n credToken: undefined,\n myUserId: this.tinode.getCurrentUserID(),\n autoLogin: true,\n requestedTopic: undefined,\n });\n // Subscribe, fetch topic desc, the list of subscriptions. Messages are not fetched.\n me.subscribe(\n me.startMetaQuery().\n withLaterSub().\n withDesc().\n withTags().\n withCred().\n build()\n ).catch((err) => {\n this.tinode.disconnect();\n localStorage.removeItem('auth-token');\n this.handleError(err.message, 'err');\n HashNavigation.navigateTo('');\n }).finally(() => {\n this.setState({loadSpinnerVisible: false});\n });\n let urlHash = HashNavigation.setUrlSidePanel(window.location.hash, 'contacts');\n if (goToTopic) {\n urlHash = HashNavigation.setUrlTopic(urlHash, goToTopic);\n }\n HashNavigation.navigateTo(urlHash);\n }\n\n tnMeMetaDesc(desc) {\n if (desc) {\n if (desc.public) {\n this.setState({\n sidePanelTitle: desc.public.fn,\n sidePanelAvatar: makeImageUrl(desc.public.photo)\n });\n }\n if (desc.trusted) {\n const badges = [];\n for (const [key, val] of Object.entries(desc.trusted)) {\n if (val) {\n badges.push(key);\n }\n }\n this.setState({\n myTrustedBadges: badges,\n });\n }\n if (desc.acs) {\n this.setState({\n incognitoMode: !desc.acs.isPresencer()\n });\n }\n }\n }\n\n // Reactions to updates to the contact list.\n tnMeContactUpdate(what, cont) {\n if (what == 'on' || what == 'off') {\n this.resetContactList();\n if (this.state.topicSelected == cont.topic) {\n this.setState({topicSelectedOnline: (what == 'on')});\n }\n } else if (what == 'read') {\n this.resetContactList();\n } else if (what == 'msg') {\n // Check if the topic is archived. If so, don't play a sound.\n const topic = this.tinode.getTopic(cont.topic);\n const archived = topic && topic.isArchived();\n\n // New message received. Maybe the message is from the current user, then unread is 0.\n if (cont.unread > 0 && this.state.messageSounds && !archived) {\n // Skip update if the topic is currently open, otherwise the badge will annoyingly flash.\n if (document.hidden || this.state.topicSelected != cont.topic) {\n POP_SOUND.play().catch(_ => {\n // play() throws if the user did not click the app first: https://goo.gl/xX8pDD.\n });\n }\n }\n // Reorder contact list to use possibly updated 'touched'.\n this.resetContactList();\n } else if (what == 'recv') {\n // Explicitly ignoring \"recv\" -- it causes no visible updates to contact list.\n } else if (what == 'gone' || what == 'unsub') {\n // Topic deleted or user unsubscribed. Remove topic from view.\n // If the currently selected topic is gone, clear the selection.\n if (this.state.topicSelected == cont.topic) {\n this.handleTopicSelected(null);\n }\n // Redraw without the deleted topic.\n this.resetContactList();\n } else if (what == 'acs') {\n // Permissions changed. If it's for the currently selected topic,\n // update the views.\n if (this.state.topicSelected == cont.topic) {\n this.setState({topicSelectedAcs: cont.acs});\n }\n } else if (what == 'del') {\n // TODO: messages deleted (hard or soft) -- update pill counter.\n } else if (what == 'upd' || what == 'call') {\n // upd, call - handled by the SDK. Explicitly ignoring here.\n } else {\n // TODO(gene): handle other types of notifications:\n // * ua -- user agent changes (maybe display a pictogram for mobile/desktop).\n console.info(\"Unsupported (yet) presence update:\", what, \"in\", cont.topic);\n }\n }\n\n tnMeSubsUpdated(unused) {\n this.resetContactList();\n }\n\n // Merge search results and contact list to create a single flat\n // list of known contacts for GroupManager to use.\n static prepareSearchableContacts(chatList, foundContacts) {\n const merged = {};\n\n // For chatList topics merge only p2p topics and convert them to the\n // same format as foundContacts.\n for (const c of chatList) {\n if (Tinode.isP2PTopicName(c.topic)) {\n merged[c.topic] = {\n user: c.topic,\n updated: c.updated,\n public: c.public,\n private: c.private,\n acs: c.acs\n };\n }\n }\n\n // Add all foundCountacts if they have not been added already.\n for (const c of foundContacts) {\n if (!merged[c.user]) {\n merged[c.user] = c;\n }\n }\n\n return Object.values(merged);\n }\n\n resetContactList() {\n const newState = {\n chatList: []\n };\n\n if (!this.state.ready) {\n newState.ready = true;\n }\n\n this.tinode.getMeTopic().contacts((c) => {\n if (!c.topic && !c.user) {\n // Contacts expect c.topic to be set.\n c.topic = c.name;\n }\n\n newState.chatList.push(c);\n if (this.state.topicSelected == c.topic) {\n newState.topicSelectedOnline = c.online;\n newState.topicSelectedAcs = c.acs;\n }\n });\n\n const past = new Date(0);\n newState.chatList.sort((a, b) => {\n return (a.touched || past).getTime() - (b.touched || past).getTime();\n });\n\n // Merge search results and chat list.\n newState.searchableContacts = TinodeWeb.prepareSearchableContacts(newState.chatList, this.state.searchResults);\n this.setState(newState);\n }\n\n /* Fnd topic: find contacts by tokens */\n tnInitFind() {\n const fnd = this.tinode.getFndTopic();\n fnd.onSubsUpdated = this.tnFndSubsUpdated;\n if (fnd.isSubscribed()) {\n this.tnFndSubsUpdated();\n } else {\n fnd.subscribe(fnd.startMetaQuery().withSub().build()).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n tnFndSubsUpdated() {\n const foundContacts = [];\n // Don't attempt to create P2P topics which already exist. Server will reject the duplicates.\n this.tinode.getFndTopic().contacts((s) => {\n foundContacts.push(s);\n });\n this.setState({\n searchResults: foundContacts,\n searchableContacts: TinodeWeb.prepareSearchableContacts(this.state.chatList, foundContacts)\n });\n }\n\n /** Called when the user enters a contact into the contact search field in the NewAccount panel\n @param query {Array} is an array of contacts to search for\n */\n handleSearchContacts(query) {\n const fnd = this.tinode.getFndTopic();\n fnd.setMeta({desc: {public: query}}).then((ctrl) => {\n return fnd.getMeta(fnd.startMetaQuery().withSub().build());\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n // User clicked on a topic in the side panel or deleted a topic.\n handleTopicSelected(topicName) {\n // Clear newTopicParams after use.\n if (this.state.newTopicParams && this.state.newTopicParams._topicName != topicName) {\n this.setState({\n newTopicParams: null\n });\n }\n\n if (topicName) {\n this.setState({\n errorText: '',\n errorLevel: null,\n mobilePanel: 'topic-view',\n infoPanel: undefined\n });\n // Different topic selected.\n if (this.state.topicSelected != topicName) {\n this.setState({\n topicSelectedOnline: this.tinode.isTopicOnline(topicName),\n topicSelectedAcs: this.tinode.getTopicAccessMode(topicName),\n forwardMessage: null\n });\n HashNavigation.navigateTo(HashNavigation.setUrlTopic('', topicName));\n }\n } else {\n // Currently selected contact deleted\n this.setState({\n errorText: '',\n errorLevel: null,\n mobilePanel: 'sidepanel',\n topicSelectedOnline: false,\n topicSelectedAcs: null,\n infoPanel: undefined,\n forwardMessage: null\n });\n\n HashNavigation.navigateTo(HashNavigation.setUrlTopic('', null));\n }\n }\n\n // In mobile view user requested to show sidepanel\n handleHideMessagesView() {\n this.setState({\n mobilePanel: 'sidepanel'\n });\n HashNavigation.navigateTo(HashNavigation.setUrlTopic(window.location.hash, null));\n }\n\n // User is sending a message, either plain text or a drafty object, possibly\n // with attachments.\n // - msg - Drafty message with content\n // - promise - Promise to be resolved when the upload is completed\n // - uploadCompletionPromise - for tracking progress\n // - head - head dictionary to be attached to the message\n handleSendMessage(msg, uploadCompletionPromise, uploader, head) {\n const topic = this.tinode.getTopic(this.state.topicSelected);\n /* TODO: check if return is required */\n return this.sendMessageToTopic(topic, msg, uploadCompletionPromise, uploader, head);\n }\n\n sendMessageToTopic(topic, msg, uploadCompletionPromise, uploader, head) {\n msg = topic.createMessage(msg, false);\n // The uploader is used to show progress.\n msg._uploader = uploader;\n\n if (head) {\n msg.head = Object.assign(msg.head || {}, head);\n }\n\n const completion = [];\n if (uploadCompletionPromise) {\n completion.push(uploadCompletionPromise);\n }\n\n if (!topic.isSubscribed()) {\n // Topic is not subscribed yet. Subscribe.\n const subscribePromise =\n topic.subscribe()\n .then(() => {\n // If there are unsent messages (except video call messages),\n // try sending them now. Unsent video call messages will be dropped.\n let calls = [];\n topic.queuedMessages(pub => {\n if (pub._sending || pub.seq == msg.seq) {\n return;\n }\n if (pub.head && pub.head.webrtc) {\n // Filter out unsent video call messages.\n calls.push(pub.seq);\n return;\n }\n if (topic.isSubscribed()) {\n topic.publishMessage(pub);\n }\n });\n if (calls.length > 0) {\n topic.delMessagesList(calls, true);\n }\n });\n completion.push(subscribePromise);\n }\n\n // TODO: check if return is required.\n return topic.publishDraft(msg, Promise.all(completion))\n .then((ctrl) => {\n if (topic.isArchived()) {\n topic.archive(false);\n }\n return ctrl;\n })\n .catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleNewChatInvitation(topicName, action) {\n const topic = this.tinode.getTopic(topicName);\n let response = null;\n switch (action) {\n case 'accept':\n // Accept given permissions.\n const mode = topic.getAccessMode().getGiven();\n response = topic.setMeta({sub: {mode: mode}});\n if (topic.isP2PType()) {\n // For P2P topics change 'given' permission of the peer too.\n // In p2p topics the other user has the same name as the topic.\n response = response.then((ctrl) => {\n topic.setMeta({sub: {user: topicName, mode: mode}});\n });\n }\n break;\n case 'delete':\n // Ignore invitation by deleting it.\n response = topic.delTopic(true);\n break;\n case 'block':\n // Ban the topic making futher invites impossible.\n // Just self-ban.\n const am = topic.getAccessMode().updateWant('-JP').getWant();\n response = topic.setMeta({sub: {mode: am}}).then((ctrl) => {\n return this.handleTopicSelected(null);\n });\n break;\n default:\n console.warn(\"Unknown invitation action\", '\"' + action + '\"\"');\n }\n\n if (response != null) {\n response.catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n // User chose a Sign Up menu item.\n handleNewAccount() {\n this.handleError();\n\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash, 'register'));\n }\n\n // Actual registration of a new account.\n handleNewAccountRequest(login_, password_, public_, cred_, tags_) {\n // Clear old error, if any.\n this.handleError();\n\n this.tinode.connect(this.state.serverAddress)\n .then(_ => {\n let attachments;\n if (public_ && public_.photo && public_.photo.ref) {\n attachments = [public_.photo.ref];\n }\n return this.tinode.createAccountBasic(login_, password_,\n {public: public_, tags: tags_, cred: Tinode.credential(cred_), attachments: attachments});\n }).then(ctrl => {\n if (ctrl.code >= 300 && ctrl.text == 'validate credentials') {\n TinodeWeb.navigateToCredentialsView(ctrl.params);\n } else {\n this.handleLoginSuccessful(this);\n }\n }).catch(err => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleToggleIncognitoMode(on) {\n // Make state undefined.\n this.setState({incognitoMode: null});\n\n const me = this.tinode.getMeTopic();\n const am = me.getAccessMode().updateWant(on ? '-P' : '+P').getWant();\n me.setMeta({sub: {mode: am}}).catch((err) => {\n // Request failed, keep existing state.\n this.setState({incognitoMode: !on});\n this.handleError(err.message, 'err');\n });\n }\n\n handleUpdateAccountTagsRequest(tags) {\n this.tinode.getMeTopic().setMeta({tags: tags})\n .catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n // User chose Settings menu item.\n handleSettings() {\n this.handleError();\n\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash,\n this.state.myUserId ? 'edit' : 'settings'));\n }\n\n // User updated global parameters.\n handleGlobalSettings(settings) {\n const serverAddress = settings.serverAddress || this.state.serverAddress;\n const transport = settings.transport || this.state.transport;\n const secureConnection = settings.secureConnection === undefined ?\n this.state.secureConnection : settings.secureConnection;\n if (this.tinode) {\n this.tinode.clearStorage();\n this.tinode.onDisconnect = undefined;\n this.tinode.disconnect();\n }\n this.tinode = TinodeWeb.tnSetup(serverAddress, secureConnection, transport,\n this.props.intl.locale, LocalStorageUtil.getObject('keep-logged-in'));\n this.tinode.onConnect = this.handleConnected;\n this.tinode.onDisconnect = this.handleDisconnect;\n this.tinode.onAutoreconnectIteration = this.handleAutoreconnectIteration;\n this.tinode.onInfoMessage = this.handleInfoMessage;\n this.tinode.onDataMessage = this.handleDataMessage;\n\n this.setState({\n serverAddress: serverAddress,\n transport: transport,\n secureConnection: secureConnection,\n });\n LocalStorageUtil.setObject('settings', {\n serverAddress: serverAddress,\n transport: transport,\n secureConnection: secureConnection,\n });\n\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash, ''));\n }\n\n // User chose 'Archived chats'.\n handleShowArchive() {\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash,\n this.state.myUserId ? 'archive' : ''));\n }\n\n // User viewes 'Blocked chats'.\n handleShowBlocked() {\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash,\n this.state.myUserId ? 'blocked' : ''));\n }\n\n toggleFCMToken(enabled) {\n if (enabled) {\n this.setState({desktopAlerts: null});\n if (!this.state.firebaseToken) {\n this.initFCMessaging();\n } else {\n this.setState({desktopAlerts: true});\n if (LocalStorageUtil.getObject('keep-logged-in')) {\n LocalStorageUtil.updateObject('settings', {desktopAlerts: true});\n }\n }\n } else if (this.state.firebaseToken && this.fcm) {\n firebaseDelToken(this.fcm).catch((err) => {\n console.error(\"Unable to delete token.\", err);\n }).finally(() => {\n LocalStorageUtil.updateObject('settings', {desktopAlerts: false});\n localStorage.removeItem('firebase-token');\n this.setState({desktopAlerts: false, firebaseToken: null});\n // Inform the server that the token was deleted.\n this.tinode.setDeviceToken(null);\n });\n } else {\n this.setState({desktopAlerts: false, firebaseToken: null});\n LocalStorageUtil.updateObject('settings', {desktopAlerts: false});\n }\n }\n\n handleToggleMessageSounds(enabled) {\n this.setState({messageSounds: enabled});\n LocalStorageUtil.updateObject('settings', {\n messageSoundsOff: !enabled\n });\n }\n\n handleCredAdd(method, value) {\n const me = this.tinode.getMeTopic();\n me.setMeta({cred: {meth: method, val: value}}).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleCredDelete(method, value) {\n const me = this.tinode.getMeTopic();\n me.delCredential(method, value).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleCredConfirm(method, response) {\n TinodeWeb.navigateToCredentialsView({cred: [method]});\n }\n\n // User clicked Cancel button in Setting or Sign Up panel.\n handleSidepanelCancel() {\n const parsed = HashNavigation.parseUrlHash(window.location.hash);\n let path = '';\n if (['security','support','general','notif'].includes(parsed.path[0])) {\n path = 'edit';\n } else if ('crop' == parsed.path[0]) {\n path = 'general';\n } else if ('blocked' == parsed.path[0]) {\n path = 'security';\n } else if (this.state.myUserId) {\n path = 'contacts';\n }\n parsed.path[0] = path;\n if (parsed.params) {\n delete parsed.params.code;\n delete parsed.params.method;\n delete parsed.params.tab;\n delete parsed.params.scheme;\n delete parsed.params.token;\n }\n HashNavigation.navigateTo(HashNavigation.composeUrlHash(parsed.path, parsed.params));\n this.setState({errorText: '', errorLevel: null});\n }\n\n // Sidepanel navigator. No need to bind to 'this'.\n basicNavigator(hash) {\n HashNavigation.navigateTo(HashNavigation.setUrlSidePanel(window.location.hash, hash));\n }\n\n // Topic info navigator. No need to bind to 'this'.\n infoNavigator(hash) {\n HashNavigation.navigateTo(HashNavigation.setUrlInfoPanel(window.location.hash, hash));\n }\n\n // Request to start a topic, new or selected from search results, or \"by ID\".\n handleStartTopicRequest(topicName, newTopicParams, isChannel) {\n // Check if topic is indeed new. If not, launch it.\n if (topicName && this.tinode.isTopicCached(topicName)) {\n this.handleTopicSelected(topicName);\n return;\n }\n\n const params = {};\n if (Tinode.isP2PTopicName(topicName)) {\n // Because we are initialing the subscription, set 'want' to all permissions.\n params.sub = {mode: DEFAULT_P2P_ACCESS_MODE};\n // Give the other user all permissions too.\n params.desc = {defacs: {auth: DEFAULT_P2P_ACCESS_MODE}};\n } else {\n topicName = topicName || this.tinode.newGroupTopicName(isChannel);\n if (newTopicParams) {\n params.desc = {public: newTopicParams.public, private: {comment: newTopicParams.private}};\n params.tags = newTopicParams.tags;\n }\n }\n params._topicName = topicName;\n this.setState({newTopicParams: params}, () => {this.handleTopicSelected(topicName)});\n }\n\n // New topic was created, here is the new topic name.\n handleNewTopicCreated(oldName, newName) {\n let nextState = {};\n if (this.state.callShouldStart) {\n nextState = {callState: CALL_STATE_IN_PROGRESS, callShouldStart: false};\n }\n if (this.state.topicSelected == oldName && oldName != newName) {\n // If the current URl contains the old topic name, replace it with new.\n // Update the name of the selected topic first so the navigator doen't clear\n // the state.\n nextState.topicSelected = newName;\n }\n this.setState(nextState, _ => {\n HashNavigation.navigateTo(HashNavigation.setUrlTopic('', newName));\n });\n }\n\n handleTopicUpdateRequest(topicName, pub, priv, defacs) {\n this.handleError();\n\n const topic = this.tinode.getTopic(topicName);\n if (topic) {\n const params = {};\n let attachments;\n if (pub) {\n if (pub.photo) {\n if (pub.photo.ref && pub.photo.ref != Tinode.DEL_CHAR) {\n attachments = [pub.photo.ref];\n } else if (!pub.photo.data || pub.photo.data == Tinode.DEL_CHAR) {\n pub.photo = Tinode.DEL_CHAR;\n }\n }\n params.public = pub;\n }\n\n if (typeof priv == 'string') {\n params.private = (priv === Tinode.DEL_CHAR) ?\n Tinode.DEL_CHAR : {comment: priv};\n }\n if (defacs) {\n params.defacs = defacs;\n }\n topic.setMeta({desc: params, attachments: attachments}).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n handleUnarchive(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (topic) {\n topic.archive(false).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n handleUpdatePasswordRequest(password) {\n this.handleError();\n\n if (password) {\n this.tinode.updateAccountBasic(null, this.tinode.getCurrentLogin(), password).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n handleChangePermissions(topicName, mode, uid) {\n const topic = this.tinode.getTopic(topicName);\n if (topic) {\n const am = topic.getAccessMode();\n if (uid) {\n am.updateGiven(mode);\n mode = am.getGiven();\n } else {\n am.updateWant(mode);\n mode = am.getWant();\n }\n topic.setMeta({sub: {user: uid, mode: mode}}).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n handleTagsUpdateRequest(topicName, tags) {\n const topic = this.tinode.getTopic(topicName);\n if (topic) {\n topic.setMeta({tags: tags}).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n }\n\n handleLogout() {\n updateFavicon(0);\n\n // Remove stored data.\n localStorage.removeItem('auth-token');\n localStorage.removeItem('firebase-token');\n localStorage.removeItem('settings');\n if (this.state.firebaseToken) {\n firebaseDelToken(this.fcm);\n }\n\n clearInterval(this.reconnectCountdown);\n\n let cleared;\n if (this.tinode) {\n cleared = this.tinode.clearStorage();\n this.tinode.onDisconnect = undefined;\n this.tinode.disconnect();\n } else {\n cleared = Promose.resolve();\n }\n this.setState(this.getBlankState());\n\n cleared.then(() => {\n this.tinode = TinodeWeb.tnSetup(this.state.serverAddress, isSecureConnection(),\n this.state.transport, this.props.intl.locale, LocalStorageUtil.getObject('keep-logged-in'), () => {\n this.tinode.onConnect = this.handleConnected;\n this.tinode.onDisconnect = this.handleDisconnect;\n this.tinode.onAutoreconnectIteration = this.handleAutoreconnectIteration;\n this.tinode.onInfoMessage = this.handleInfoMessage;\n this.tinode.onDataMessage = this.handleDataMessage;\n HashNavigation.navigateTo('');\n })\n });\n }\n\n handleDeleteAccount() {\n this.tinode.delCurrentUser(true).then(_ => {\n this.handleLogout();\n });\n }\n\n handleDeleteTopicRequest(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n // Request to hard-delete topic.\n topic.delTopic(true).then((ctrl) => {\n // Hide MessagesView and InfoView panels.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic(window.location.hash, ''));\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleDeleteMessagesRequest(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n // Request hard-delete all messages.\n topic.delMessagesAll(true).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleLeaveUnsubRequest(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n topic.leave(true).then((ctrl) => {\n // Hide MessagesView and InfoView panels.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic(window.location.hash, ''));\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleBlockTopicRequest(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n topic.updateMode(null, '-JP').then(_ => {\n // Hide MessagesView and InfoView panels.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic(window.location.hash, ''));\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleReportTopic(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n // Publish spam report.\n this.tinode.report('report', topicName);\n\n // Remove J and P permissions.\n topic.updateMode(null, '-JP').then((ctrl) => {\n // Hide MessagesView and InfoView panels.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic(window.location.hash, ''));\n }).catch((err) => {\n this.handleError(err.message, 'err');\n });\n }\n\n handleShowContextMenu(params, menuItems) {\n this.setState({\n contextMenuVisible: true,\n contextMenuClickAt: {x: params.x, y: params.y},\n contextMenuParams: params,\n contextMenuItems: menuItems || this.defaultTopicContextMenu(params.topicName),\n contextMenuBounds: this.selfRef.current.getBoundingClientRect()\n });\n }\n\n //\n handleShowForwardDialog(params) {\n if (this.state.sidePanelSelected == 'newtpk') {\n // If the Find panel is active, close it.\n this.handleSidepanelCancel();\n }\n const header = '➦ ' + params.userName;\n const content = typeof params.content == 'string' ? Drafty.init(params.content) : Drafty.forwardedContent(params.content);\n const preview = Drafty.preview(content, FORWARDED_PREVIEW_LENGTH, true);\n const msg = Drafty.append(Drafty.appendLineBreak(Drafty.mention(header, params.userFrom)), content);\n const msgPreview = Drafty.quote(header, params.userFrom, preview);\n\n const head = {\n forwarded: params.topicName + ':' + params.seq\n };\n this.setState({\n forwardDialogVisible: true,\n forwardMessage: { head: head, msg: msg, preview: msgPreview }\n });\n }\n\n defaultTopicContextMenu(topicName) {\n const topic = this.tinode.getTopic(topicName);\n\n if (topic._deleted) {\n return [\n 'topic_delete'\n ];\n }\n\n let muted = false, blocked = false, self_blocked = false, subscribed = false, deleter = false,\n archived = false, webrtc = false;\n if (topic) {\n subscribed = topic.isSubscribed();\n archived = topic.isArchived();\n\n const acs = topic.getAccessMode();\n if (acs) {\n muted = acs.isMuted();\n blocked = !acs.isJoiner();\n self_blocked = !acs.isJoiner('want');\n deleter = acs.isDeleter();\n }\n }\n\n webrtc = !!this.tinode.getServerParam('iceServers');\n\n return [\n subscribed ? {\n title: this.props.intl.formatMessage(messages.menu_item_info),\n handler: this.handleShowInfoView\n } : null,\n subscribed && Tinode.isP2PTopicName(topicName) && webrtc ? {\n title: this.props.intl.formatMessage(messages.menu_item_video_call),\n handler: this.handleStartVideoCall\n } : null,\n subscribed ? 'messages_clear' : null,\n subscribed && deleter ? 'messages_clear_hard' : null,\n muted ? (blocked ? null : 'topic_unmute') : 'topic_mute',\n self_blocked ? 'topic_unblock' : 'topic_block',\n archived ? 'topic_restore' : 'topic_archive',\n 'topic_delete'\n ];\n }\n\n handleHideContextMenu() {\n this.setState({\n contextMenuVisible: false,\n contextMenuClickAt: null,\n contextMenuParams: null,\n contextMenuBounds: null\n });\n }\n\n handleHideForwardDialog(keepForwardedMessage) {\n this.setState({\n forwardDialogVisible: false,\n forwardMessage: keepForwardedMessage ? this.state.forwardMessage : null\n });\n }\n\n handleContextMenuAction(action, promise, params) {\n if (action == 'topic_archive') {\n if (promise && params.topicName && params.topicName == this.state.topicSelected) {\n promise.then(() => {\n this.handleTopicSelected(null);\n });\n }\n } else if (action == 'menu_item_forward') {\n this.handleShowForwardDialog(params);\n }\n }\n\n handleShowAlert(title, content, onConfirm, confirmText, onReject, rejectText) {\n this.setState({\n alertVisible: true,\n alertParams: {\n title: title,\n content: content,\n onConfirm: onConfirm,\n confirm: confirmText,\n onReject: onReject,\n reject: rejectText\n }\n });\n }\n\n handleShowInfoView() {\n HashNavigation.navigateTo(HashNavigation.addUrlParam(window.location.hash, 'info', 'info'));\n this.setState({infoPanel: 'info'});\n }\n\n handleMemberUpdateRequest(topicName, added, removed) {\n if (!topicName) {\n return;\n }\n\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n\n if (added && added.length > 0) {\n added.map((uid) => {\n topic.invite(uid, null).catch((err) => {\n this.handleError(err.message, 'err');\n });\n });\n }\n\n if (removed && removed.length > 0) {\n removed.map((uid) => {\n topic.delSubscription(uid).catch((err) => {\n this.handleError(err.message, 'err');\n });\n });\n }\n }\n\n handleValidateCredentialsRequest(cred, code, token) {\n if (this.tinode.isAuthenticated()) {\n // Adding new email or phone number in account setting.\n this.tinode.getMeTopic().setMeta({cred: {meth: cred, resp: code}})\n .catch((err) => {\n this.handleError(err.message, 'err');\n });\n } else {\n // Credential validation on signup.\n this.setState({credMethod: cred, credCode: code, credToken: token});\n this.doLogin(null, null, token, {meth: cred, resp: code});\n }\n }\n\n handlePasswordResetRequest(method, value) {\n // If already connected, connnect() will return a resolved promise.\n return this.tinode.connect()\n .then(() => {\n return this.tinode.requestResetAuthSecret('basic', method, value);\n })\n .catch((err) => {\n // Socket error\n this.handleError(err.message, 'err');\n });\n }\n\n handleResetPassword(scheme, newPassword, token) {\n token = base64ReEncode(token);\n if (!token) {\n this.handleError(this.props.intl.formatMessage(messages.invalid_security_token), 'err');\n } else {\n this.tinode.connect()\n .then(() => {\n return this.tinode.updateAccountBasic(null, null, newPassword, {token: token});\n })\n .then(() => {\n HashNavigation.navigateTo('');\n })\n .catch((err) => {\n // Socket error\n this.handleError(err.message, 'err');\n });\n }\n }\n\n handleStartVideoCall() {\n this.setState({\n callTopic: this.state.topicSelected,\n callState: CALL_STATE_OUTGOING_INITATED\n });\n }\n\n handleCallInvite(callTopic, callSeq, callState) {\n switch (callState) {\n case CALL_STATE_OUTGOING_INITATED:\n let head = { webrtc: CALL_HEAD_STARTED };\n this.handleSendMessage(Drafty.videoCall(), undefined, undefined, head)\n .then((ctrl) => {\n if (ctrl.code < 200 || ctrl.code >= 300 || !ctrl.params || !ctrl.params.seq) {\n this.handleCallClose();\n return;\n }\n this.setState({callSeq: ctrl.params['seq']});\n });\n break;\n case CALL_STATE_IN_PROGRESS:\n const topic = this.tinode.getTopic(callTopic);\n if (!topic) {\n return;\n }\n // We've accepted the call. Let the other side know.\n topic.videoCall('accept', callSeq);\n break;\n }\n }\n\n handleCallRinging(callTopic, callSeq) {\n const topic = this.tinode.getTopic(callTopic);\n if (!topic) {\n return;\n }\n\n topic.videoCall('ringing', callSeq);\n }\n\n handleCallHangup(callTopic, callSeq) {\n const topic = this.tinode.getTopic(callTopic);\n if (!topic) {\n return;\n }\n\n topic.videoCall('hang-up', callSeq);\n }\n\n handleCallSendOffer(callTopic, callSeq, sdp) {\n const topic = this.tinode.getTopic(callTopic);\n if (!topic) {\n return;\n }\n\n topic.videoCall('offer', callSeq, sdp);\n }\n\n handleCallIceCandidate(callTopic, callSeq, candidate) {\n const topic = this.tinode.getTopic(callTopic);\n if (!topic) {\n return;\n }\n\n topic.videoCall('ice-candidate', callSeq, candidate);\n }\n handleCallSendAnswer(callTopic, callSeq, sdp) {\n const topic = this.tinode.getTopic(callTopic);\n if (!topic) {\n return;\n }\n\n topic.videoCall('answer', callSeq, sdp);\n }\n\n handleCallClose() {\n if (this.callTimeoutTimer) {\n clearTimeout(this.callTimeoutTimer);\n }\n this.setState({\n callTopic: undefined,\n callState: CALL_STATE_NONE\n });\n }\n\n handleCallAcceptCall(topicName) {\n const topic = this.tinode.getTopic(topicName);\n if (!topic) {\n return;\n }\n if (topic.isSubscribed()) {\n this.handleTopicSelected(this.state.callTopic);\n this.setState({\n callState: CALL_STATE_IN_PROGRESS\n });\n } else {\n // We need to switch and subscribe to callTopic first.\n this.setState({\n callShouldStart: true,\n }, () => this.handleTopicSelected(this.state.callTopic));\n }\n }\n\n handleInfoMessage(info) {\n if (info.what != 'call') {\n return;\n }\n switch (info.event) {\n case 'accept':\n // If another my session has accepted the call.\n if (Tinode.isMeTopicName(info.topic) && this.tinode.isMe(info.from)) {\n this.setState({\n callTopic: null,\n callState: CALL_STATE_NONE,\n callSeq: null\n });\n return;\n }\n if (info.topic == this.state.callTopic) {\n // Update state.\n this.setState({callState: CALL_STATE_IN_PROGRESS});\n }\n break;\n case 'hang-up':\n // Remote hangup.\n this.handleCallClose();\n break;\n }\n }\n\n handleDataMessage(data) {\n if (data.head && data.head.webrtc && data.head.webrtc == CALL_HEAD_STARTED) {\n // If it's a video call invite message.\n // See if we need to display incoming call UI.\n const topic = this.tinode.getTopic(data.topic);\n if (topic) {\n // Check if a later version of the message exists (which means the call\n // has been either accepted or finished already).\n const msg = topic.latestMsgVersion(data.seq) || data;\n if (msg.head && msg.head.webrtc && msg.head.webrtc == CALL_HEAD_STARTED) {\n // This is a legit new call.\n if (data.from != this.state.myUserId) {\n if (this.state.callState == CALL_STATE_NONE) {\n // Incoming call.\n this.setState({\n callTopic: data.topic,\n callState: CALL_STATE_INCOMING_RECEIVED,\n callSeq: data.seq\n });\n } else {\n // Another call is either in progress or being established.\n // Reject the incoming call.\n this.handleCallHangup(data.topic, data.seq);\n }\n }\n }\n } else {\n console.warn(\"Received vc data message from unknown topic\", data.topic);\n }\n }\n }\n\n render() {\n return (\n
    \n {this.state.contextMenuVisible ?\n {\n if (topicName == this.state.topicSelected) {\n this.handleTopicSelected(null);\n }\n }}\n onError={this.handleError} />\n :\n null\n }\n {this.state.forwardDialogVisible ?\n \n :\n null\n }\n {this.state.callTopic && this.state.callState == CALL_STATE_INCOMING_RECEIVED ?\n \n :\n null\n }\n { this.setState({alertVisible: false}); }) : null}\n reject={this.state.alertParams.reject}\n onConfirm={() => { this.setState({alertVisible: false}); this.state.alertParams.onConfirm(); }}\n confirm={this.state.alertParams.confirm}\n />\n \n\n \n\n {this.state.infoPanel ?\n \n :\n null\n }\n
    \n );\n }\n};\n\nexport default injectIntl(TinodeWeb);\n","// ValidationView: panel for confirming credentials, like email or phone.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n phone: {\n id: 'phone_dative',\n defaultMessage: 'phone',\n description: \"Dative case of 'phone', i.e. 'phone' in 'by phone'\",\n },\n email: {\n id: 'email_dative',\n defaultMessage: 'email',\n description: \"Dative case of 'email', i.e. 'email' in 'by email'\",\n }\n});\n\nclass ValidationView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n code: props.credCode || '',\n codeReceived: props.credCode\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.credCode != prevState.codeReceived) {\n return {\n code: nextProps.credCode || '',\n codeReceived: nextProps.credCode\n };\n }\n\n return prevState;\n }\n\n componentDidMount() {\n // Submit code automatically if it's received from the parent.\n if (this.props.credCode) {\n this.props.onSubmit(this.props.credMethod, this.props.credCode, this.props.credToken);\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n // Submit code automatically if it's received from the parent.\n if (this.state.codeReceived && this.state.code && this.state.code != prevState.code) {\n this.props.onSubmit(this.props.credMethod, this.state.code, this.props.credToken);\n }\n }\n\n\n handleChange(e) {\n this.setState({code: e.target.value.trim()});\n }\n\n handleKeyPress(e) {\n if (e.key === 'Enter') {\n this.handleSubmit(e);\n } else if (e.key == 'Escape') {\n this.handleCancel(e);\n }\n }\n\n handleSubmit(e) {\n e.preventDefault();\n if (this.state.code && this.state.code.trim()) {\n this.props.onSubmit(this.props.credMethod, this.state.code.trim(), this.props.credToken);\n }\n }\n\n handleCancel(e) {\n e.preventDefault();\n this.props.onCancel();\n }\n\n render() {\n const { formatMessage } = this.props.intl;\n const methods = {'email': formatMessage(messages.email), 'tel': formatMessage(messages.phone)};\n const method = methods[this.props.credMethod] || this.props.credMethod;\n return (\n
    \n
    \n \n
    \n
    \n {\n (numbers_only) => \n }\n
    \n
    \n \n \n
    \n
    \n );\n }\n};\n\nexport default injectIntl(ValidationView);\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class Alert extends React.PureComponent {\n render() {\n return this.props.visible ?\n
    \n
    \n
    {this.props.title}
    \n
    {this.props.content}
    \n
    \n {this.props.onReject ?\n \n :\n null\n }\n \n
    \n
    \n
    \n :\n null;\n }\n};\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport FileProgress from './file-progress.jsx';\nimport { bytesToHumanSize } from '../lib/strformat.js';\nimport { isUrlRelative, sanitizeUrl } from '../lib/utils.js';\n\nexport default class Attachment extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n downloader: null,\n progress: 0\n };\n\n this.downloadFile = this.downloadFile.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n downloadFile(url, filename, mimetype) {\n if (!url) {\n this.props.onError(\"Invalid download URL '\" + url + \"'\");\n return;\n }\n\n const downloader = this.props.tinode.getLargeFileHelper();\n this.setState({downloader: downloader});\n downloader.download(url, filename, mimetype,\n (loaded) => {\n this.setState({progress: loaded / this.props.size});\n },\n (err) => {\n this.props.onError(err, 'err');\n }\n ).then(() => {\n this.setState({downloader: null, progress: 0});\n }).catch((err) => {\n if (err) {\n this.props.onError(\"Error downloading file: \" + err.message, 'err');\n }\n this.setState({downloader: null, progress: 0});\n });\n }\n\n handleCancel() {\n if (this.props.uploading) {\n this.props.onCancelUpload();\n } else if (this.state.downloader) {\n this.state.downloader.cancel();\n }\n }\n\n render() {\n let filename = this.props.filename || 'file_attachment';\n if (filename.length > 36) {\n filename = filename.substr(0, 16) + '...' + filename.substr(-16);\n }\n let size = this.props.size > 0 ?\n ({bytesToHumanSize(this.props.size)}) :\n null;\n\n // Detect if the download URL is relative or absolute.\n // If the URL is relative use LargeFileHelper to attach authentication\n // credentials to the request.\n let url, helperFunc;\n if (!this.props.uploading && !this.state.downloader && isUrlRelative(this.props.downloadUrl)) {\n // Relative URL. Use download helper.\n url = '#';\n helperFunc = (e) => {\n e.preventDefault();\n this.downloadFile(this.props.downloadUrl, this.props.filename, this.props.mimetype);\n };\n } else {\n url = sanitizeUrl(this.props.downloadUrl);\n helperFunc = null;\n }\n const downloadWidget = <>file_download ;\n return (\n
    \n
    insert_drive_file
    \n
    \n
    {filename} {size}
    \n {this.props.uploading || this.state.downloader ?\n \n :\n
    {url ?\n {downloadWidget}\n :\n {downloadWidget}\n }
    \n }\n
    \n
    \n );\n }\n};\n","// Audio recorder widget.\n\nimport React from 'react';\n\nimport { secondsToTime } from '../lib/strformat';\nimport { base64ToIntArray } from '../lib/blob-helpers';\n\n// Make canvas bigger than the element size to reduce blurring.\nconst CANVAS_UPSCALING = 2.0;\n// Thickness of a visualization bar.\nconst LINE_WIDTH = 3 * CANVAS_UPSCALING;\n// Spacing between two visualization bars.\nconst SPACING = 2 * CANVAS_UPSCALING;\n// Color of histogram bars.\nconst BAR_COLOR = '#888A';\nconst BAR_COLOR_DARK = '#666C';\nconst THUMB_COLOR = '#444E';\n// Minimum number of amplitude bars to draw.\nconst MIN_PREVIEW_LENGTH = 16;\n\nexport default class AudioPlayer extends React.PureComponent {\n constructor(props) {\n super(props);\n\n let preview = base64ToIntArray(this.props.preview);\n if (!Array.isArray(preview) || preview.length < MIN_PREVIEW_LENGTH) {\n preview = null;\n }\n\n this.state = {\n canPlay: false,\n playing: false,\n currentTime: '0:00',\n duration: this.props.duration > 0 ? secondsToTime(this.props.duration / 1000) : '-:--',\n longMin: this.props.duration >= 600000,\n preview: preview\n };\n\n this.initAudio = this.initAudio.bind(this);\n this.initCanvas = this.initCanvas.bind(this);\n this.resampleBars = this.resampleBars.bind(this);\n this.visualize = this.visualize.bind(this);\n\n this.handlePlay = this.handlePlay.bind(this);\n this.handleSeek = this.handleSeek.bind(this);\n this.handleError = this.handleError.bind(this);\n\n this.audioPlayer = null;\n\n this.viewBuffer = [];\n this.canvasRef = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.src) {\n this.initAudio();\n }\n\n this.initCanvas();\n }\n\n componentWillUnmount() {\n if (this.audioPlayer) {\n this.audioPlayer.oncanplay = null;\n this.audioPlayer.ontimeupdate = null;\n this.audioPlayer.onended = null;\n this.audioPlayer.pause();\n this.audioPlayer = null;\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.src != prevProps.src) {\n this.initAudio();\n }\n\n if (this.props.preview != prevProps.preview) {\n let preview = base64ToIntArray(this.props.preview);\n if (!Array.isArray(preview) || preview.length < MIN_PREVIEW_LENGTH) {\n preview = null;\n }\n this.setState({preview: preview}, this.initCanvas);\n }\n }\n\n initAudio() {\n this.audioPlayer = new Audio(this.props.src);\n this.audioPlayer.oncanplay = _ => this.setState({canPlay: true});\n this.audioPlayer.ontimeupdate = _ => this.setState({\n currentTime: secondsToTime(this.audioPlayer.currentTime, this.state.longMin)\n });\n this.audioPlayer.onended = _ => {\n this.audioPlayer.currentTime = 0;\n this.setState({playing: false, currentTime: secondsToTime(0, this.state.longMin)})\n }\n }\n\n initCanvas() {\n // Force canvas aspect ratio to match one of the element + upscale canvas to reduce blurring.\n this.canvasRef.current.width = this.canvasRef.current.offsetWidth * CANVAS_UPSCALING;\n this.canvasRef.current.height = this.canvasRef.current.offsetHeight * CANVAS_UPSCALING;\n\n this.canvasContext = this.canvasRef.current.getContext('2d');\n this.canvasContext.lineCap = 'round';\n\n this.viewBuffer = this.resampleBars(this.state.preview);\n this.visualize();\n }\n\n // Draw amplitude of sound.\n visualize() {\n if (!this.canvasRef.current) {\n return;\n }\n\n const width = this.effectiveWidth;\n const height = this.canvasRef.current.height;\n\n this.canvasContext.lineWidth = LINE_WIDTH;\n\n const drawFrame = () => {\n if (!this.canvasRef.current || !this.audioPlayer) {\n // The component is unmounted.\n return;\n }\n\n this.canvasContext.clearRect(0, 0, this.canvasRef.current.width, height);\n\n if (this.viewBuffer) {\n if (this.state.playing) {\n window.requestAnimationFrame(drawFrame);\n }\n\n // Current playback position.\n const thumbAt = this.props.duration ?\n Math.max(0, Math.min(this.audioPlayer.currentTime * 1000 / this.props.duration, 1)) * (width - LINE_WIDTH * 2) : -1;\n\n // Draw amplitude bars.\n this.canvasContext.beginPath();\n this.canvasContext.strokeStyle = BAR_COLOR_DARK;\n for (let i = 0; i < this.viewBuffer.length; i++) {\n let x = 1 + i * (LINE_WIDTH + SPACING) + LINE_WIDTH * 0.5;\n let y = this.viewBuffer[i] * height * 0.9;\n\n const color = x < thumbAt ? BAR_COLOR_DARK : BAR_COLOR;\n if (this.canvasContext.strokeStyle != color) {\n this.canvasContext.stroke();\n this.canvasContext.beginPath();\n this.canvasContext.strokeStyle = color;\n }\n\n this.canvasContext.moveTo(x, (height - y) * 0.5);\n this.canvasContext.lineTo(x, height * 0.5 + y * 0.5);\n }\n // Actually draw the bars on canvas.\n this.canvasContext.stroke();\n\n // Draw thumb.\n if (this.props.duration) {\n this.canvasContext.beginPath();\n this.canvasContext.arc(thumbAt + LINE_WIDTH * 2, height * 0.5, LINE_WIDTH * 2, 0, 2 * Math.PI);\n this.canvasContext.fillStyle = THUMB_COLOR;\n this.canvasContext.fill();\n }\n }\n }\n\n drawFrame();\n }\n\n // Quick and dirty downsampling of the original preview bars into a smaller (or equal) number of bars we can display here.\n resampleBars(original) {\n const dstCount = ((this.canvasRef.current.width - SPACING) / (LINE_WIDTH + SPACING)) | 0;\n // Remove extra padding on the right due to fractional bar which is not drawn.\n this.effectiveWidth = dstCount * (LINE_WIDTH + SPACING) + SPACING;\n\n if (!Array.isArray(original) || original.length == 0) {\n return Array.apply(null, Array(dstCount)).map(_ => 0.01);\n }\n\n const factor = original.length / dstCount;\n let amps = [];\n let maxAmp = -1;\n for (let i=0; i 0) {\n return amps.map(a => a / maxAmp);\n }\n return Array.apply(null, Array(dstCount)).map(_ => 0.01);\n }\n\n handlePlay(e) {\n e.preventDefault();\n if (!this.state.canPlay) {\n return;\n }\n if (this.state.playing) {\n this.audioPlayer.pause();\n this.setState({playing: false});\n } else {\n this.audioPlayer.play();\n this.setState({playing: true}, this.visualize);\n }\n }\n\n handleError(err) {\n console.error(err);\n }\n\n handleSeek(e) {\n e.preventDefault();\n if (e.target && this.props.duration) {\n const rect = e.target.getBoundingClientRect();\n const offset = (e.clientX - rect.left) / this.effectiveWidth * CANVAS_UPSCALING;\n this.audioPlayer.currentTime = this.props.duration * offset / 1000;\n this.setState({currentTime: secondsToTime(this.audioPlayer.currentTime, this.state.longMin)});\n if (!this.state.playing) {\n this.visualize();\n }\n }\n }\n\n render() {\n const playClass = 'material-icons' +\n (this.props.short ? '' : ' large') +\n (this.state.canPlay ? '' : ' disabled');\n const play = (\n {this.state.playing ? 'pause_circle' :\n (this.state.canPlay ? 'play_circle' : 'not_interested')}\n );\n return (
    {this.props.short ?\n <>\n \n {play}\n \n :\n <>\n {play}\n
    \n \n
    {this.state.currentTime}/{this.state.duration}
    \n
    \n \n }\n
    );\n }\n}\n","// Audio recorder widget.\n\nimport React from 'react';\n\nimport AudioPlayer from './audio-player.jsx';\n// Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=642012\n// import fixWebmDuration from 'fix-webm-duration';\n\nimport { intArrayToBase64 } from '../lib/blob-helpers.js'\nimport { secondsToTime } from '../lib/strformat';\nimport { MAX_DURATION, MIN_DURATION } from '../config.js';\n\n// FFT resolution.\nconst BUFFER_SIZE = 256;\n// Make canvas bigger than the element size to reduce blurring.\nconst CANVAS_UPSCALING = 2.0;\n// Thickness of a visualization bar.\nconst LINE_WIDTH = 3 * CANVAS_UPSCALING;\n// Spacing between two visualization bars.\nconst SPACING = 2 * CANVAS_UPSCALING;\n// Duration represented by one visualization bar.\nconst MILLIS_PER_BAR = 100;\n// Color of histogram bars\nconst BAR_COLOR = '#BBBD';\n// Vertical scaling for visualization bars.\nconst BAR_SCALE = 64.0;\n// Number of bars in preview.\nconst VISUALIZATION_BARS = 96;\n// Maximum number of samples per bar.\nconst MAX_SAMPLES_PER_BAR = 10;\n\n// Recording format.\nconst AUDIO_MIME_TYPE = 'audio/webm';\n\nexport default class AudioRecorder extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n enabled: true,\n audioRecord: null,\n recording: true,\n paused: false,\n duration: '0:00',\n blobUrl: null,\n preview: null\n };\n\n this.visualize = this.visualize.bind(this);\n this.initMediaRecording = this.initMediaRecording.bind(this);\n this.initCanvas = this.initCanvas.bind(this);\n this.getRecording = this.getRecording.bind(this);\n this.cleanUp = this.cleanUp.bind(this);\n\n this.handleResume = this.handleResume.bind(this);\n this.handlePause = this.handlePause.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleDone = this.handleDone.bind(this);\n\n this.durationMillis = 0;\n this.startedOn = null;\n this.viewBuffer = [];\n this.canvasRef = React.createRef();\n }\n\n componentDidMount() {\n this.stream = null;\n this.mediaRecorder = null;\n this.audioContext = null;\n this.audioInput = null;\n this.analyser = null;\n\n this.audioChunks = [];\n\n // Start recorder right away.\n try {\n navigator.mediaDevices.getUserMedia({audio: true, video: false}).then(this.initMediaRecording, this.props.onError);\n } catch (err) {\n this.props.onError(err);\n }\n }\n\n componentWillUnmount() {\n this.startedOn = null;\n if (this.stream) {\n this.cleanUp();\n }\n }\n\n // Draw amplitude of sound.\n visualize() {\n this.initCanvas();\n\n const pcmData = new Uint8Array(this.analyser.frequencyBinCount);\n const width = this.canvasWidth;\n const height = this.canvasHeight;\n // Number of bars.\n const viewLength = (width / (LINE_WIDTH + SPACING)) | 0;\n // Duration of audio which fits onto the screen.\n const viewDuration = MILLIS_PER_BAR * viewLength;\n\n this.canvasContext.lineWidth = LINE_WIDTH;\n this.canvasContext.strokeStyle = BAR_COLOR;\n\n let prevBarCount = 0;\n let volume = 0.0;\n let countPerBar = 0;\n const drawFrame = () => {\n if (!this.startedOn) {\n return;\n }\n window.requestAnimationFrame(drawFrame);\n\n const duration = this.durationMillis + (Date.now() - this.startedOn);\n // Update record length timer.\n this.setState({duration: secondsToTime(duration / 1000)});\n\n // Check if record is too long.\n if (duration > MAX_DURATION) {\n this.startedOn = null;\n this.mediaRecorder.pause();\n this.durationMillis += Date.now() - this.startedOn;\n this.setState({enabled: false, recording: false, duration: secondsToTime(this.durationMillis / 1000)});\n }\n\n // Draw histogram.\n\n // Get current waveform and calculate its amplitude.\n this.analyser.getByteTimeDomainData(pcmData);\n let amp = 0.0;\n for (const amplitude of pcmData) {\n amp += (amplitude - 127) ** 2;\n }\n\n // Sum the amplitude.\n volume += Math.sqrt(amp/pcmData.length);\n countPerBar ++;\n\n let barCount = (duration / MILLIS_PER_BAR) | 0;\n // Shift of the histogram along x-axis to make scrolling smooth. No need to shift if recording is too short.\n const dx = viewDuration > duration ? 0 :\n (duration - MILLIS_PER_BAR * barCount) / MILLIS_PER_BAR * (LINE_WIDTH + SPACING);\n\n if (prevBarCount != barCount) {\n prevBarCount = barCount;\n // Add new amplitude visualization bar.\n this.viewBuffer.push(volume/countPerBar);\n volume = 0.0;\n countPerBar = 0;\n if (this.viewBuffer.length > viewLength) {\n // Keep at most 'viewLength' amplitude bars.\n this.viewBuffer.shift();\n }\n }\n\n // Clear canvas.\n this.canvasContext.clearRect(0, 0, width, height);\n\n // Draw amplitude bars.\n this.canvasContext.beginPath();\n for (let i = 0; i < this.viewBuffer.length; i++) {\n let x = i * (LINE_WIDTH + SPACING) - dx;\n let y = Math.min(this.viewBuffer[i] / BAR_SCALE, 0.9) * height;\n\n this.canvasContext.moveTo(x, (height - y) * 0.5);\n this.canvasContext.lineTo(x, height * 0.5 + y * 0.5);\n }\n // Actually draw the bars on canvas.\n this.canvasContext.stroke();\n }\n\n drawFrame();\n }\n\n handlePause(e) {\n e.preventDefault();\n this.mediaRecorder.pause();\n this.mediaRecorder.requestData();\n this.durationMillis += Date.now() - this.startedOn;\n this.startedOn = null;\n this.setState({recording: false});\n }\n\n handleResume(e) {\n e.preventDefault();\n if (this.state.enabled) {\n this.startedOn = Date.now();\n this.mediaRecorder.resume();\n this.setState({recording: true}, this.visualize);\n }\n }\n\n handleDelete(e) {\n e.preventDefault();\n this.durationMillis = 0;\n this.startedOn = null;\n this.mediaRecorder.stop();\n this.cleanUp();\n this.setState({recording: false});\n }\n\n handleDone(e) {\n e.preventDefault();\n this.setState({recording: false});\n if (this.startedOn) {\n this.durationMillis += Date.now() - this.startedOn;\n this.startedOn = null;\n }\n // Stop recording and return data.\n if (this.mediaRecorder) {\n this.mediaRecorder.stop();\n }\n }\n\n initCanvas() {\n this.canvasRef.current.width = this.canvasRef.current.offsetWidth * CANVAS_UPSCALING;\n this.canvasRef.current.height = this.canvasRef.current.offsetHeight * CANVAS_UPSCALING;\n\n this.canvasContext = this.canvasRef.current.getContext('2d');\n this.canvasContext.lineCap = 'round';\n // To reduce line blurring.\n this.canvasContext.translate(0.5, 0.5);\n this.canvasWidth = this.canvasRef.current.width;\n this.canvasHeight = this.canvasRef.current.height;\n }\n\n initMediaRecording(stream) {\n this.stream = stream;\n this.mediaRecorder = new MediaRecorder(stream, {mimeType: AUDIO_MIME_TYPE, audioBitsPerSecond: 24_000});\n\n // The following code is needed for visualization.\n this.audioContext = new AudioContext();\n this.audioInput = this.audioContext.createMediaStreamSource(stream);\n this.analyser = this.audioContext.createAnalyser();\n this.analyser.fftSize = BUFFER_SIZE;\n this.audioInput.connect(this.analyser);\n\n this.mediaRecorder.onstop = _ => {\n if (this.durationMillis > MIN_DURATION) {\n this.getRecording(this.mediaRecorder.mimeType, this.durationMillis)\n .then(result => this.props.onFinished(result.url, result.preview, this.durationMillis));\n } else {\n this.props.onDeleted();\n }\n this.cleanUp();\n }\n\n this.mediaRecorder.ondataavailable = (e) => {\n if (e.data.size > 0) {\n this.audioChunks.push(e.data);\n }\n\n if (this.mediaRecorder.state != 'inactive') {\n this.getRecording(this.mediaRecorder.mimeType).then(result => {\n this.setState({\n blobUrl: result.url,\n preview: result.preview\n });\n });\n }\n }\n\n this.durationMillis = 0;\n this.startedOn = Date.now();\n this.mediaRecorder.start();\n this.visualize();\n }\n\n // Obtain data in a form sutable for sending or playing back.\n // If duration is valid, apply fix for Chrome's WebM duration bug.\n getRecording(mimeType, duration) {\n let blob = new Blob(this.audioChunks, {type: mimeType || AUDIO_MIME_TYPE});\n return (duration > 0 ? ysFixWebmDuration(blob, duration, {logger: false}) : Promise.resolve(blob))\n .then(fixedBlob => { blob = fixedBlob; return fixedBlob.arrayBuffer(); })\n .then(arrayBuff => this.audioContext.decodeAudioData(arrayBuff))\n .then(decoded => this.createPreview(decoded))\n .then(preview => ({url: window.URL.createObjectURL(blob), preview: intArrayToBase64(preview)}));\n }\n\n // Preview must be calculated at the source: Chrome does not allow background AudioContext.\n createPreview(audio) {\n const data = audio.getChannelData(0);\n // Number of amplitude bars in preview.\n const viewLength = Math.min(data.length, VISUALIZATION_BARS);\n // The number of samples in each bar.\n const totalSPB = (data.length / viewLength) | 0;\n // Distance between samples: we are going to take just a fracton of samples.\n const samplingRate = Math.max(1, (totalSPB / MAX_SAMPLES_PER_BAR) | 0);\n\n let buffer = [];\n let max = -1;\n for (let i = 0; i < viewLength; i++) {\n let amplitude = 0;\n let count = 0;\n for (let j = 0; j < totalSPB; j += samplingRate) {\n amplitude += data[totalSPB * i + j] ** 2;\n count ++;\n }\n const val = Math.sqrt(amplitude / count);\n buffer.push(val);\n max = Math.max(max, val);\n }\n // Normalize amplitude to 0..100.\n if (max > 0) {\n buffer = buffer.map(a => (100 * a / max) | 0);\n }\n return buffer;\n }\n\n cleanUp() {\n this.audioInput.disconnect();\n this.stream.getTracks().forEach(track => track.stop());\n }\n\n render() {\n const resumeClass = 'material-icons ' + (this.state.enabled ? 'red' : 'gray');\n return (\n
    \n \n delete_outline\n \n {this.state.recording ?\n \n :\n \n }\n
    {this.state.duration}
    \n {this.state.recording ?\n \n pause_circle_outline\n :\n \n radio_button_checked\n \n }\n \n send\n \n
    \n );\n }\n}\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport Cropper from './cropper.jsx';\nimport { imageCrop } from '../lib/blob-helpers.js';\n\nexport default class AvatarCrop extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n scale: 1\n };\n\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleChange = this.handleChange.bind(this);\n }\n\n // Cut out in image coordinates and desired scale factor.\n handleChange(left, top, width, height, scale) {\n this.setState({\n left: left,\n top: top,\n width: width,\n height: height,\n scale: scale\n });\n }\n\n handleSubmit() {\n imageCrop(this.props.mime, this.props.avatar,\n this.state.left, this.state.top, this.state.width, this.state.height,\n this.state.scale)\n .then(img => {\n this.props.onSubmit(img.mime, img.blob, img.width, img.height);\n })\n .catch(err => {\n this.props.onError(err);\n });\n }\n\n render() {\n return (\n
    \n
    \n \n
    \n
    \n {this.props.onCancel ?\n \n : null}\n \n
    \n
    \n );\n }\n};\n","import React from 'react';\n\nimport LetterTile from './letter-tile.jsx';\nimport LoadSpinner from './load-spinner.jsx';\n\nimport { sanitizeUrlForMime } from '../lib/utils.js';\n\nimport { AVATAR_SIZE } from '../config.js';\n\nexport default class AvatarUpload extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n source: props.avatar\n };\n\n this.handleFileReceived = this.handleFileReceived.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.avatar != prevProps.avatar) {\n this.setState({source: this.props.avatar});\n }\n }\n\n handleFileReceived(e) {\n const image = e.target.files[0];\n this.props.onImageUpdated(image.type, URL.createObjectURL(image), image.name);\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n render() {\n // Randomize id value in case more than one AvatarUpload is shown\n // at the same time.\n const randId = 'file-input-avatar-' + ('' + Math.random()).substring(0, 4);\n const className = 'avatar-upload' + (this.props.readOnly ? ' read-only' : '');\n return (\n
    \n {this.props.readOnly || !this.state.source ?\n null :\n {e.preventDefault(); this.props.onImageUpdated();}}>\n clear\n }\n {this.state.source ?\n :\n this.props.readOnly && this.props.uid ?\n
    \n \n
    \n :\n
    {AVATAR_SIZE}×{AVATAR_SIZE}
    }\n {this.props.readOnly ? null :\n }\n {this.props.readOnly ? null :\n }\n \n
    \n );\n }\n};\n","import React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst icon_mapping = {'staff': 'verified_user'};\n\nconst messages = defineMessages({\n badge_verified: {\n id: 'badge_verified',\n defaultMessage: 'Verified/official',\n description: 'Explanation of a verified account or topic badge'\n },\n badge_staff: {\n id: 'badge_staff',\n defaultMessage: 'Staff-managed',\n description: 'Explanation of a staff-managed account or topic badge'\n },\n badge_danger: {\n id: 'badge_danger',\n defaultMessage: 'Untrustworthy',\n description: 'Suspicious or untrustworthy account or topic badge'\n },\n});\n\n\n/* Trusted badges with labels: verified, staff, danger */\nclass BadgeList extends React.PureComponent {\n render() {\n const {formatMessage} = this.props.intl;\n let badges = null;\n if (this.props.trustedBadges && this.props.trustedBadges.length > 0) {\n badges = [];\n this.props.trustedBadges.map((b) => {\n const comment = this.props.short ? null : formatMessage(messages['badge_' + b]);\n const style = 'material-icons ' + b + '-color';\n badges.push(
    {icon_mapping[b] || b} {comment}
    );\n });\n return <>{badges};\n }\n return null;\n }\n};\n\nexport default injectIntl(BadgeList);\n","// The <- button to be displayed in title bars.\nimport React from 'react';\n\nexport default class ButtonBack extends React.PureComponent {\n render() {\n return (\n {e.preventDefault(); this.props.onBack();}}>\n arrow_back\n \n );\n }\n}\n","// IncomingCall: displays Accept & Reject buttons for incoming calls.\nimport React from 'react';\n\nimport BadgeList from './badge-list.jsx';\nimport LetterTile from './letter-tile.jsx';\n\nimport { MAX_TITLE_LENGTH, MAX_PEER_TITLE_LENGTH } from '../config.js';\nimport { CALL_STATE_INCOMING_RECEIVED } from '../constants.js';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\nimport { clipStr } from '../lib/utils.js'\n\nconst RING_SOUND = new Audio('audio/call-in.m4a');\n\nexport default class CallIncoming extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n topic: null,\n fullName: undefined,\n avatar: null,\n trustedBadges: [],\n previousMetaDesc: undefined,\n };\n\n this.resetDesc = this.resetDesc.bind(this);\n this.onMetaDesc = this.onMetaDesc.bind(this);\n this.handleRejectCall = this.handleRejectCall.bind(this);\n this.handleAcceptCall = this.handleAcceptCall.bind(this);\n this.ringTimer = null;\n }\n\n componentDidMount() {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n\n this.resetDesc(topic, this.props);\n if (this.props.callState == CALL_STATE_INCOMING_RECEIVED) {\n // play() throws if the user did not click the app first: https://goo.gl/xX8pDD.\n RING_SOUND.play().catch(_ => {});\n this.ringTimer = setInterval(_ => {RING_SOUND.play().catch(_ => {})}, 2000);\n this.props.onRinging(this.props.topic, this.props.seq);\n }\n }\n\n // No need to separately handle component mount.\n componentDidUpdate(props) {\n const topic = this.props.tinode.getTopic(props.topic);\n if (!topic) {\n return;\n }\n\n if (this.onMetaDesc != topic.onMetaDesc) {\n this.previousMetaDesc = topic.onMetaDesc;\n topic.onMetaDesc = this.onMetaDesc;\n }\n\n if (this.state.topic != props.topic) {\n this.setState({topic: props.topic});\n this.resetDesc(topic, props);\n }\n }\n\n componentWillUnmount() {\n if (this.ringTimer != null) {\n clearInterval(this.ringTimer);\n RING_SOUND.pause();\n }\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.setState({topic: null});\n topic.onMetaDesc = this.previousMetaDesc;\n }\n\n resetDesc(topic, props) {\n const defacs = topic.getDefaultAccess() || {};\n const acs = topic.getAccessMode();\n const badges = [];\n if (topic.trusted) {\n for (const [key, val] of Object.entries(topic.trusted)) {\n if (val) {\n badges.push(key);\n }\n }\n }\n\n this.setState({\n fullName: clipStr(topic.public ? topic.public.fn : undefined, MAX_TITLE_LENGTH),\n avatar: makeImageUrl(topic.public ? topic.public.photo : null),\n trustedBadges: badges,\n });\n }\n\n onMetaDesc(desc) {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.resetDesc(topic, this.props);\n\n if (this.previousMetaDesc && this.previousMetaDesc != this.onMetaDesc) {\n this.previousMetaDesc(desc);\n }\n }\n\n handleAcceptCall() {\n this.props.onAcceptCall(this.props.topic);\n }\n\n handleRejectCall() {\n this.props.onReject(this.props.topic, this.props.seq);\n this.props.onClose();\n }\n\n render() {\n return (\n
    \n
    \n
    \n
    \n \n
    \n
    {clipStr(this.state.fullName, MAX_PEER_TITLE_LENGTH)}\n
    \n
    \n
    \n {this.props.callState == CALL_STATE_INCOMING_RECEIVED ?\n <>\n \n \n \n :\n null\n }\n
    \n
    \n
    \n );\n }\n};\n","// Chat message describing a video or voice call.\n\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { secondsToTime } from '../lib/strformat.js';\n\nexport default class CallMessage extends React.PureComponent {\n render() {\n const isCallDropped = ['declined', 'disconnected', 'missed'].includes(this.props.callState);\n const successClass = 'material-icons medium ' + (isCallDropped ? 'red' : 'green');\n const callIcon = this.props.incoming ?\n (isCallDropped ? 'call_missed' : 'call_received') :\n (isCallDropped ? 'call_missed_outgoing' : 'call_made');\n let duration;\n if (isCallDropped) {\n switch (this.props.callState) {\n case 'declined':\n duration = ;\n break;\n case 'missed':\n duration = this.props.incoming ?\n :\n ;\n break;\n default:\n duration = ;\n break;\n }\n } else {\n duration = {secondsToTime(this.props.duration / 1000)};\n }\n return
    \n
    call
    \n
    \n
    {this.props.incoming ?\n :\n \n }
    \n
    {callIcon} {duration}
    \n
    \n
    ;\n }\n}\n","// CallPanel displays call in progress: local and remote viewports and controls.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport LetterTile from './letter-tile.jsx';\n\nimport { MAX_PEER_TITLE_LENGTH } from '../config.js';\nimport { CALL_STATE_OUTGOING_INITATED, CALL_STATE_IN_PROGRESS } from '../constants.js';\n\nimport { clipStr } from '../lib/utils.js'\n\nconst RING_SOUND = new Audio('audio/call-out.m4a');\nRING_SOUND.loop = true;\nconst CALL_ENDED_SOUND = new Audio('audio/call-end.m4a');\nCALL_ENDED_SOUND.loop = true;\nconst DIALING_SOUND = new Audio('audio/dialing.m4a');\n\nconst messages = defineMessages({\n already_in_call: {\n id: 'already_in_call',\n defaultMessage: 'You already in an ongoing call!',\n description: 'Error message when the user tried to accept a new call without finishing pervious one',\n }\n});\n\nclass CallPanel extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n localStream: undefined,\n pc: undefined,\n\n previousOnInfo: undefined,\n waitingForPeer: false,\n // If true, the client has received a remote SDP from the peer and has sent a local SDP to the peer.\n callInitialSetupComplete: false\n };\n\n this.localStreamConstraints = {\n audio: true,\n video: true\n };\n this.isOutgoingCall = props.callState == CALL_STATE_OUTGOING_INITATED;\n\n this.localRef = React.createRef();\n this.remoteRef = React.createRef();\n // Cache for remote ice candidates until initial setup gets completed.\n this.remoteIceCandidatesCache = [];\n\n this.onInfo = this.onInfo.bind(this);\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n\n this.createPeerConnection = this.createPeerConnection.bind(this);\n this.canSendOffer = this.canSendOffer.bind(this);\n this.drainRemoteIceCandidatesCache = this.drainRemoteIceCandidatesCache.bind(this);\n\n this.handleNegotiationNeededEvent = this.handleNegotiationNeededEvent.bind(this);\n this.handleICECandidateEvent = this.handleICECandidateEvent.bind(this);\n this.handleNewICECandidateMsg = this.handleNewICECandidateMsg.bind(this);\n this.handleICEConnectionStateChangeEvent = this.handleICEConnectionStateChangeEvent.bind(this);\n this.handleSignalingStateChangeEvent = this.handleSignalingStateChangeEvent.bind(this);\n this.handleICEGatheringStateChangeEvent = this.handleICEGatheringStateChangeEvent.bind(this);\n this.handleIceCandidateErrorEvent = this.handleIceCandidateErrorEvent.bind(this);\n this.handleTrackEvent = this.handleTrackEvent.bind(this);\n\n this.handleVideoOfferMsg = this.handleVideoOfferMsg.bind(this);\n this.handleVideoAnswerMsg = this.handleVideoAnswerMsg.bind(this);\n this.handleNewICECandidateMsg = this.handleNewICECandidateMsg.bind(this);\n\n this.reportError = this.reportError.bind(this);\n this.handleGetUserMediaError = this.handleGetUserMediaError.bind(this);\n\n this.stopTracks = this.stopTracks.bind(this);\n\n this.handleCloseClick = this.handleCloseClick.bind(this);\n this.handleToggleCameraClick = this.handleToggleCameraClick.bind(this);\n this.handleToggleMicClick = this.handleToggleMicClick.bind(this);\n this.toggleMedia = this.toggleMedia.bind(this);\n\n this.handleRemoteHangup = this.handleRemoteHangup.bind(this);\n this.handleVideoCallAccepted = this.handleVideoCallAccepted.bind(this);\n }\n\n componentDidMount() {\n const topic = this.props.tinode.getTopic(this.props.topic);\n this.previousOnInfo = topic.onInfo;\n topic.onInfo = this.onInfo;\n if ((this.props.callState == CALL_STATE_OUTGOING_INITATED ||\n this.props.callState == CALL_STATE_IN_PROGRESS) && this.localRef.current) {\n this.start();\n }\n }\n\n componentWillUnmount() {\n const topic = this.props.tinode.getTopic(this.props.topic);\n topic.onInfo = this.previousOnInfo;\n this.stop();\n }\n\n handleVideoCallAccepted(info) {\n RING_SOUND.pause();\n const pc = this.createPeerConnection();\n const stream = this.state.localStream;\n stream.getTracks().forEach(track => {\n pc.addTrack(track, stream);\n });\n }\n\n onInfo(info) {\n if (info.what != 'call') {\n return;\n }\n switch (info.event) {\n case 'accept':\n this.handleVideoCallAccepted(info);\n break;\n case 'answer':\n this.handleVideoAnswerMsg(info);\n break;\n case 'ice-candidate':\n this.handleNewICECandidateMsg(info);\n break;\n case 'hang-up':\n this.handleRemoteHangup(info);\n break;\n case 'offer':\n this.handleVideoOfferMsg(info);\n break;\n case 'ringing':\n // play() throws if the user did not click the app first: https://goo.gl/xX8pDD.\n RING_SOUND.play().catch(_ => {});\n break;\n default:\n console.warn(\"Unknown call event\", info.event);\n break;\n }\n }\n\n start() {\n if (this.state.localStream) {\n this.props.onError(this.props.intl.formatMessage(messages.already_in_call));\n return;\n }\n\n if (this.props.callState == CALL_STATE_IN_PROGRESS) {\n // We apparently just accepted the call.\n this.props.onInvite(this.props.topic, this.props.seq, this.props.callState);\n return;\n }\n\n // This is an outgoing call waiting for the other side to pick up.\n // Start local video.\n navigator.mediaDevices.getUserMedia(this.localStreamConstraints)\n .then(stream => {\n this.setState({localStream: stream, waitingForPeer: true});\n this.localRef.current.srcObject = stream;\n\n DIALING_SOUND.play();\n\n // Send call invitation.\n this.props.onInvite(this.props.topic, this.props.seq, this.props.callState);\n })\n .catch(this.handleGetUserMediaError);\n }\n\n stop() {\n CALL_ENDED_SOUND.pause();\n CALL_ENDED_SOUND.currentTime = 0;\n RING_SOUND.pause();\n RING_SOUND.currentTime = 0;\n\n this.stopTracks(this.localRef.current);\n this.stopTracks(this.remoteRef.current);\n if (this.state.pc) {\n this.state.pc.ontrack = null;\n this.state.pc.onremovetrack = null;\n this.state.pc.onremovestream = null;\n this.state.pc.onicecandidate = null;\n this.state.pc.oniceconnectionstatechange = null;\n this.state.pc.onsignalingstatechange = null;\n this.state.pc.onicegatheringstatechange = null;\n this.state.pc.onnegotiationneeded = null;\n this.state.pc.onicecandidateerror = null;\n\n this.state.pc.close();\n }\n this.setState({pc: null, waitingForPeer: false});\n }\n\n stopTracks(el) {\n if (!el) {\n return;\n }\n let stream = el.srcObject;\n if (!stream) {\n return;\n }\n\n let tracks = stream.getTracks();\n if (tracks) {\n tracks.forEach(track => {\n track.stop();\n track.enabled = false;\n });\n }\n el.srcObject = null;\n el.src = '';\n }\n\n createPeerConnection() {\n const iceServers = this.props.tinode.getServerParam('iceServers', null);\n const pc = iceServers ? new RTCPeerConnection({iceServers: iceServers}) : new RTCPeerConnection();\n\n pc.onicecandidate = this.handleICECandidateEvent;\n pc.oniceconnectionstatechange = this.handleICEConnectionStateChangeEvent;\n pc.onicegatheringstatechange = this.handleICEGatheringStateChangeEvent;\n pc.onsignalingstatechange = this.handleSignalingStateChangeEvent;\n pc.onnegotiationneeded = this.handleNegotiationNeededEvent;\n pc.onicecandidateerror = this.handleIceCandidateErrorEvent;\n pc.ontrack = this.handleTrackEvent;\n\n this.setState({pc: pc, waitingForPeer: false});\n return pc;\n }\n\n handleVideoAnswerMsg(info) {\n // Configure the remote description, which is the SDP payload\n // in 'info' message.\n const desc = new RTCSessionDescription(info.payload);\n this.state.pc.setRemoteDescription(desc)\n .then(_ => {\n this.setState({ callInitialSetupComplete: true }, () => this.drainRemoteIceCandidatesCache());\n })\n .catch(this.reportError);\n }\n\n reportError(err) {\n this.props.onError(err.message, 'err');\n }\n\n canSendOffer() {\n return this.isOutgoingCall || this.state.callInitialSetupComplete;\n }\n\n handleNegotiationNeededEvent() {\n if (!this.canSendOffer()) {\n return;\n }\n this.state.pc.createOffer().then(offer => {\n return this.state.pc.setLocalDescription(offer);\n })\n .then(_ => {\n this.props.onSendOffer(this.props.topic, this.props.seq, this.state.pc.localDescription.toJSON());\n })\n .catch(this.reportError);\n }\n\n handleIceCandidateErrorEvent(event) {\n console.warn(\"ICE candidate error:\", event);\n }\n\n handleICECandidateEvent(event) {\n if (event.candidate) {\n this.props.onIceCandidate(this.props.topic, this.props.seq, event.candidate.toJSON());\n }\n }\n\n handleNewICECandidateMsg(info) {\n const candidate = new RTCIceCandidate(info.payload);\n if (this.state.callInitialSetupComplete) {\n this.state.pc.addIceCandidate(candidate)\n .catch(this.reportError);\n } else {\n this.remoteIceCandidatesCache.push(candidate);\n }\n }\n\n drainRemoteIceCandidatesCache() {\n this.remoteIceCandidatesCache.forEach(candidate => {\n this.state.pc.addIceCandidate(candidate)\n .catch(this.reportError);\n });\n this.remoteIceCandidatesCache = [];\n }\n\n handleICEConnectionStateChangeEvent(event) {\n switch (this.state.pc.iceConnectionState) {\n case 'closed':\n case 'failed':\n this.handleCloseClick();\n break;\n }\n }\n\n handleSignalingStateChangeEvent(event) {\n if (this.state.pc.signalingState == 'closed') {\n this.handleCloseClick();\n }\n }\n\n handleICEGatheringStateChangeEvent(event) {\n // ICE gathering change state\n }\n\n handleTrackEvent(event) {\n // Remote video becomes available.\n this.remoteRef.current.srcObject = event.streams[0];\n // Make sure we display the title (peer's name) over the remote video.\n this.forceUpdate();\n }\n\n handleGetUserMediaError(e) {\n switch(e.name) {\n case 'NotFoundError':\n // Cannot start the call b/c no camera and/or microphone found.\n this.reportError(e.message);\n break;\n case 'SecurityError':\n case 'PermissionDeniedError':\n // Do nothing; this is the same as the user canceling the call.\n break;\n default:\n this.reportError(e.message);\n console.error(\"Error opening your camera and/or microphone:\", e.message);\n break;\n }\n\n // Make sure we shut down our end of the RTCPeerConnection so we're\n // ready to try again.\n this.handleCloseClick();\n }\n\n handleVideoOfferMsg(info) {\n let localStream = null;\n const pc = this.createPeerConnection();\n const desc = new RTCSessionDescription(info.payload);\n\n pc.setRemoteDescription(desc).then(_ => {\n return navigator.mediaDevices.getUserMedia(this.localStreamConstraints);\n })\n .then(stream => {\n localStream = stream;\n this.localRef.current.srcObject = stream;\n this.setState({localStream: stream});\n\n localStream.getTracks().forEach(track => {\n pc.addTrack(track, localStream);\n });\n })\n .then(_ => {\n return pc.createAnswer();\n })\n .then(answer => {\n return pc.setLocalDescription(answer);\n })\n .then(_ => {\n this.props.onSendAnswer(this.props.topic, this.props.seq, pc.localDescription.toJSON());\n this.setState({ callInitialSetupComplete: true }, () => this.drainRemoteIceCandidatesCache());\n })\n .catch(this.handleGetUserMediaError);\n }\n\n // Call disconnected by remote.\n handleRemoteHangup() {\n if (!this.state.waitingForPeer) {\n // This is live call, just hang up.\n this.handleCloseClick();\n } else {\n // This is a call which is not yet connected.\n // Stop pulse animation.\n this.setState({waitingForPeer: false});\n // Change sound and wait a bit before ending it.\n RING_SOUND.pause();\n RING_SOUND.currentTime = 0;\n CALL_ENDED_SOUND.loop = true;\n CALL_ENDED_SOUND.play().catch(_ => {});\n setTimeout(_ => {\n this.handleCloseClick();\n }, 2000);\n }\n }\n\n handleCloseClick() {\n this.stop();\n this.props.onHangup(this.props.topic, this.props.seq);\n }\n\n // Mute/unmute audio/video (specified by kind).\n toggleMedia(kind) {\n const stream = this.state.localStream;\n stream.getTracks().forEach(track => {\n if (track.kind != kind) {\n return;\n }\n track.enabled = !track.enabled;\n });\n // Make sure we redraw the mute/unmute icons (e.g. mic -> mic_off).\n this.forceUpdate();\n }\n\n handleToggleCameraClick() {\n this.toggleMedia('video');\n }\n\n handleToggleMicClick() {\n this.toggleMedia('audio');\n }\n\n render() {\n const remoteActive = this.remoteRef.current && this.remoteRef.current.srcObject;\n const disabled = !(this.state.localStream && this.state.localStream.getTracks());\n const audioIcon = this.state.localStream && this.state.localStream.getAudioTracks()[0].enabled ? 'mic' : 'mic_off';\n const videoIcon = this.state.localStream && this.state.localStream.getVideoTracks()[0].enabled ? 'videocam' : 'videocam_off';\n const peerTitle = clipStr(this.props.title, MAX_PEER_TITLE_LENGTH);\n const pulseAnimation = this.state.waitingForPeer ? ' pulse' : '';\n\n return (\n <>\n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n {remoteActive ?\n
    {peerTitle}
    :\n
    \n
    \n \n
    \n
    {peerTitle}
    \n
    \n }\n
    \n
    \n
    \n \n \n \n
    \n
    \n \n );\n }\n};\n\nexport default injectIntl(CallPanel);\n","// The counter of unread messages in the topic.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { secondsToTime } from '../lib/strformat.js';\n\n// Props:\n// incoming: true | false.\n// success: true | false.\nexport default class CallStatus extends React.PureComponent {\n render() {\n const isCallDropped = ['declined', 'disconnected', 'missed'].includes(this.props.callState);\n const icon2 = this.props.incoming ?\n (isCallDropped ? 'call_missed' : 'call_received') :\n (isCallDropped ? 'call_missed_outgoing' : 'call_made');\n let duration;\n if (isCallDropped) {\n switch (this.props.callState) {\n case 'declined':\n duration = ;\n break;\n case 'missed':\n duration = this.props.incoming ?\n :\n ;\n break;\n default:\n duration = ;\n break;\n }\n } else {\n duration = {secondsToTime(this.props.duration / 1000)};\n }\n return (\n <>\n
    \n call{icon2}\n
    {duration}\n \n );\n }\n};\n","// Single chat message bubble, sent or received.\n\nimport React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport { Drafty, Tinode } from 'tinode-sdk';\n\nimport Attachment from './attachment.jsx';\nimport LetterTile from './letter-tile.jsx';\nimport ReceivedMarker from './received-marker.jsx'\n\nimport { fullFormatter } from '../lib/formatters.js';\nimport { sanitizeUrl } from '../lib/utils.js';\n\nclass BaseChatMessage extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n progress: 0\n };\n\n if (props.uploader) {\n props.uploader.onProgress = this.handleProgress.bind(this);\n }\n\n this.handleImagePreview = this.handleImagePreview.bind(this);\n this.handleFormButtonClick = this.handleFormButtonClick.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n this.handleCancelUpload = this.handleCancelUpload.bind(this);\n this.handleQuoteClick = this.handleQuoteClick.bind(this);\n\n this.formatterContext = {\n formatMessage: props.intl.formatMessage.bind(props.intl),\n viewportWidth: props.viewportWidth,\n authorizeURL: props.tinode.authorizeURL.bind(props.tinode),\n\n onImagePreview: this.handleImagePreview,\n onFormButtonClick: this.handleFormButtonClick,\n onQuoteClick: this.handleQuoteClick\n };\n }\n\n handleImagePreview(e) {\n e.preventDefault();\n this.props.onImagePreview({\n url: e.target.src,\n filename: e.target.title,\n width: e.target.dataset.width,\n height: e.target.dataset.height,\n size: e.target.dataset.size,\n type: e.target.dataset.mime\n });\n }\n\n handleFormButtonClick(e) {\n e.preventDefault();\n const data = {\n seq: this.props.seq\n };\n data.resp = {};\n if (e.target.dataset.name) {\n data.resp[e.target.dataset.name] = e.target.dataset.val ? e.target.dataset.val :\n e.target.dataset.val === undefined ? 1 : '' + e.target.dataset.val;\n }\n if (e.target.dataset.act == 'url') {\n data.ref = sanitizeUrl(e.target.dataset.ref) || 'about:blank';\n }\n const text = e.target.dataset.title || 'unknown';\n this.props.onFormResponse(e.target.dataset.act, text, data);\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n const menuItems = [];\n if (this.props.received == Tinode.MESSAGE_STATUS_FAILED) {\n menuItems.push('menu_item_send_retry');\n }\n if (this.props.userIsWriter &&\n this.props.received > Tinode.MESSAGE_STATUS_FAILED &&\n this.props.received < Tinode.MESSAGE_STATUS_DEL_RANGE) {\n menuItems.push('menu_item_reply');\n }\n menuItems.push('menu_item_forward');\n\n this.props.showContextMenu({\n seq: this.props.seq,\n content: this.props.content,\n userFrom: this.props.userFrom,\n userName: this.props.userName,\n y: e.pageY,\n x: e.pageX,\n pickReply: this.props.pickReply\n }, menuItems);\n }\n\n handleProgress(ratio) {\n this.setState({progress: ratio});\n }\n\n handleCancelUpload() {\n this.props.onCancelUpload(this.props.seq, this.props.uploader);\n }\n\n handleQuoteClick(e) {\n e.preventDefault();\n e.stopPropagation();\n const replyToSeq = this.props.replyToSeq;\n if (replyToSeq) {\n this.props.onQuoteClick(replyToSeq);\n }\n }\n\n render() {\n const sideClass = this.props.sequence + ' ' + (this.props.response ? 'left' : 'right');\n const bubbleClass = (this.props.sequence == 'single' || this.props.sequence == 'last') ? 'bubble tip' : 'bubble';\n const avatar = this.props.userAvatar || true;\n const fullDisplay = (this.props.isGroup && this.props.response &&\n (this.props.sequence == 'single' || this.props.sequence == 'last'));\n\n let content = this.props.content;\n const attachments = [];\n if (this.props.mimeType == Drafty.getContentType() && Drafty.isValid(content)) {\n Drafty.attachments(content, (att, i) => {\n if (att.mime == 'application/json') {\n // Don't show json objects as attachments.\n // They are not meant for users.\n return;\n }\n attachments.push();\n }, this);\n const tree = Drafty.format(content, fullFormatter, this.formatterContext);\n content = React.createElement(React.Fragment, null, tree);\n } else if (this.props.deleted) {\n // Message represents a range of deleted messages.\n content = <>block \n \n \n } else if (typeof content != 'string') {\n content = <>warning_amber \n \n }\n\n return (\n
  • \n {this.props.isGroup && this.props.response ?\n
    \n {fullDisplay ?\n :\n null}\n
    :\n null}\n
    \n
    \n
    \n
    \n {content}\n {attachments}\n
    \n {this.props.timestamp ?\n \n : null}\n
    \n {this.props.showContextMenu ?\n \n \n expand_more\n \n : null\n }\n
    \n {fullDisplay ?\n
    \n {this.props.userName ||\n \n }\n
    \n : null\n }\n
    \n
  • \n );\n }\n};\n\nconst IntlChatMessage = injectIntl(BaseChatMessage);\nconst ChatMessage = React.forwardRef((props, ref) => );\n\nexport default ChatMessage;\n","import React from 'react';\n\n/* CheckBox: styled three-state checkbox, either clickable or static */\nexport default class CheckBox extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange() {\n this.props.onChange(this.props.name, !this.props.checked);\n }\n\n render() {\n let classList = ['material-icons'];\n let iconName;\n if (Array.isArray(this.props.className)) {\n classList.push(...this.props.className);\n } else if (this.props.className) {\n classList.push(this.props.className);\n }\n if (this.props.onChange) {\n if (this.props.checked) {\n classList.push('blue', 'clickable');\n iconName = 'check_box';\n } else if (this.props.checked === false) {\n classList.push('blue', 'clickable');\n iconName = 'check_box_outline_blank';\n } else {\n classList.push('lt-blue');\n iconName = 'indeterminate_check_box';\n }\n } else {\n if (this.props.checked) {\n iconName = 'check_box';\n } else {\n iconName = 'check_box_outline_blank';\n }\n }\n let attrs = {\n className: classList.join(' '),\n id: this.props.id,\n };\n if (this.props.onChange) {\n attrs.onClick = this.handleChange;\n }\n return React.createElement('i', attrs, iconName);\n }\n}\n","import React from 'react';\n\nimport Chip from './chip.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\n/* BEGIN ChipInput: group membership widget */\nexport default class ChipInput extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = ChipInput.deriveStateFromProps(props);\n this.state.input = '';\n this.state.focused = false;\n\n this.handleTextInput = this.handleTextInput.bind(this);\n this.removeChipAt = this.removeChipAt.bind(this);\n this.handleChipCancel = this.handleChipCancel.bind(this);\n this.handleFocusGained = this.handleFocusGained.bind(this);\n this.handleFocusLost = this.handleFocusLost.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n static deriveStateFromProps(props) {\n return {\n placeholder: props.chips ? '' : props.prompt,\n sortedChips: ChipInput.sortChips(props.chips, props.staticMembers),\n chipIndex: ChipInput.indexChips(props.chips)\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.chips != this.props.chips ||\n prevProps.staticMembers != this.props.staticMembers ||\n prevProps.prompt != this.props.prompt) {\n this.setState(ChipInput.deriveStateFromProps(this.props));\n }\n if (!prevState || this.props.chips.length > prevState.sortedChips.length) {\n this.setState({input: ''});\n }\n }\n\n // Map chip index to user name\n static indexChips(chips) {\n const index = {};\n let count = 0;\n chips.map((item) => {\n index[item.user] = count;\n count ++;\n });\n return index;\n }\n\n // Have non-removable chips appear before all other chips.\n static sortChips(chips, keep) {\n const required = [];\n const normal = [];\n chips.map((item) => {\n if (keep && keep.includes(item.user)) {\n required.push(item);\n } else {\n normal.push(item);\n }\n });\n return required.concat(normal);\n }\n\n handleTextInput(e) {\n this.setState({input: e.target.value});\n if (this.props.filterFunc) {\n this.props.filterFunc(e.target.value);\n }\n }\n\n removeChipAt(idx) {\n const removed = this.state.sortedChips[idx];\n this.props.onChipRemoved(removed.user, this.state.chipIndex[removed.user]);\n }\n\n handleChipCancel(item, idx) {\n this.removeChipAt(idx);\n }\n\n handleFocusGained() {\n this.setState({focused: true});\n }\n\n handleFocusLost() {\n this.setState({focused: false});\n if (this.props.onFocusLost) {\n this.props.onFocusLost(this.state.input);\n }\n }\n\n handleKeyDown(e) {\n if (e.key === 'Backspace') {\n if (this.state.input.length == 0 && this.state.sortedChips.length > 0) {\n const at = this.state.sortedChips.length - 1;\n if (this.state.sortedChips[at].user !== this.props.staticMembers) {\n this.removeChipAt(at);\n }\n }\n } else if (e.key === 'Enter') {\n if (this.props.onEnter) {\n this.props.onEnter(this.state.input);\n }\n } else if (e.key === 'Escape') {\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n }\n }\n\n render() {\n const chips = [];\n let count = 0;\n const staticMembers = this.props.staticMembers || [];\n this.state.sortedChips.map((item) => {\n chips.push(\n \n );\n count++;\n });\n const className = \"chip-input\" + (this.state.focused ? ' focused' : '');\n const autoFocus = !(this.props.tabIndex > 0);\n return (\n
    \n {chips}\n \n
    \n );\n }\n};\n","import React from 'react';\n\nimport LetterTile from './letter-tile.jsx';\n\nexport default class Chip extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n handleCancel(e) {\n e.preventDefault();\n this.props.onCancel(this.props.topic, this.props.index);\n }\n\n render() {\n const title = this.props.title || this.props.topic;\n const className = this.props.invalid ? 'chip invalid' : 'chip';\n return (\n
    \n {this.props.noAvatar ?\n :\n
    \n \n
    \n }\n {title}\n {this.props.onCancel && !this.props.required ?\n ×\n : }\n
    \n );\n }\n};\n","// A panel included into a list of contacts with an action text.\nimport React from 'react';\nimport { injectIntl } from 'react-intl';\n\nclass ContactAction extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onAction(this.props.action);\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
  • \n
    {formatMessage(this.props.title, this.props.values)}
    \n
  • \n );\n }\n};\n\nexport default injectIntl(ContactAction);\n","import React from 'react';\n\nconst icon_mapping = {'muted': 'notifications_off', 'banned': 'block', 'staff': 'verified_user'};\n\n/* Contact's labels: [you], or icons [muted], [blocked] */\nexport default class ContactBadges extends React.PureComponent {\n render() {\n let badges = null;\n if (this.props.badges && this.props.badges.length > 0) {\n badges = [];\n this.props.badges.map((b) => {\n const color = (b.color ? ' ' + b.color : '');\n if (b.icon) {\n badges.push({icon_mapping[b.icon] || b.icon});\n } else {\n badges.push({b.name});\n }\n });\n return <>{badges};\n }\n return null;\n }\n};\n","// ContactList: component for showing a list of contacts,\n// such as a list of group members in a group chat.\nimport React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport { Drafty, Tinode } from 'tinode-sdk';\n\nimport Contact from './contact.jsx';\nimport ContactAction from './contact-action.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\nimport { MESSAGE_PREVIEW_LENGTH } from '../config.js';\n\nconst messages = defineMessages({\n badge_you: {\n id: 'badge_you',\n defaultMessage: 'you',\n description: 'Badge for indicating the current user'\n },\n badge_owner: {\n id: 'badge_owner',\n defaultMessage: 'owner',\n description: 'Badge for indicating the owner'\n }\n});\n\nclass ContactList extends React.Component {\n render() {\n const { formatMessage } = this.props.intl;\n const showCheckmark = Array.isArray(this.props.topicSelected);\n const contactNodes = [];\n let contactsCount = 0;\n if (this.props.contacts && this.props.contacts.length > 0) {\n this.props.contacts.map((c) => {\n if (c.action) {\n // Action item\n contactNodes.push(\n );\n } else {\n // Normal contact\n const key = this.props.showMode ? c.user : (c.topic || c.user);\n // If filter function is provided, filter out the items\n // which don't satisfy the condition.\n if (this.props.filterFunc && this.props.filter) {\n const filterOn = [key];\n if (c.private && c.private.comment) {\n filterOn.push(('' + c.private.comment).toLowerCase());\n }\n if (c.public && c.public.fn) {\n filterOn.push(('' + c.public.fn).toLowerCase());\n }\n if (!this.props.filterFunc(this.props.filter, filterOn)) {\n return;\n }\n }\n\n const isChannel = Tinode.isChannelTopicName(key);\n const selected = showCheckmark ?\n (this.props.topicSelected.indexOf(key) > -1) :\n (this.props.topicSelected === key);\n const badges = [];\n if (this.props.showMode) {\n if (key == this.props.myUserId) {\n badges.push({name: formatMessage(messages.badge_you), color: 'green'});\n }\n if (c.acs && c.acs.isOwner()) {\n badges.push({name: formatMessage(messages.badge_owner), color: 'blue'});\n }\n }\n\n const comment = Array.isArray(c.private) ?\n c.private.join(',') : (c.private ? c.private.comment : null);\n let preview;\n let forwarded;\n let previewIsResponse;\n let deliveryStatus;\n if (!this.props.showMode && c.latestMessage) {\n const msg = c.latestMessage(true);\n if (msg) {\n forwarded = msg.head ? msg.head.forwarded : null;\n deliveryStatus = msg._status || c.msgStatus(msg, true);\n previewIsResponse = msg.from != this.props.myUserId;\n if (msg.content) {\n preview = typeof msg.content == 'string' ?\n msg.content.substr(0, MESSAGE_PREVIEW_LENGTH) :\n Drafty.preview(msg.content, MESSAGE_PREVIEW_LENGTH);\n }\n }\n }\n\n contactNodes.push(\n \n );\n contactsCount ++;\n }\n }, this);\n }\n\n return (\n
    \n {contactsCount == 0 ?\n
    \n :\n null\n }\n {contactNodes.length > 0 ?\n
      \n {contactNodes}\n
    \n :\n null\n }\n
    \n );\n }\n};\n\nexport default injectIntl(ContactList);\n","// A single topic or user.\nimport React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport ContactBadges from './contact-badges.jsx';\nimport LetterTile from './letter-tile.jsx';\nimport UnreadBadge from './unread-badge.jsx';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport { previewFormatter } from '../lib/formatters.js';\nimport { deliveryMarker } from '../lib/utils.js';\n\nclass Contact extends React.Component {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.props.onSelected) {\n // Index this.props.index is used by GroupManager.\n this.props.onSelected(this.props.item, this.props.index);\n }\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showContextMenu({ topicName: this.props.item, y: e.pageY, x: e.pageX });\n }\n\n render() {\n let title = this.props.title;\n if (!title) {\n title = ;\n } else if (title.length > 30) {\n // FIXME: this is probably wrong for RTL languages.\n title = title.substring(0, 28) + '…';\n }\n const online = this.props.now ? 'online' : 'offline';\n const avatar = this.props.avatar ? this.props.avatar : true;\n const badges = this.props.badges ? this.props.badges.slice() : [];\n const icon_badges = [];\n if (this.props.isVerified) {\n icon_badges.push({icon: 'verified', color: 'verified-color'});\n }\n if (this.props.isStaff) {\n icon_badges.push({icon: 'staff', color: 'staff-color'});\n }\n if (this.props.isDangerous) {\n icon_badges.push({icon: 'dangerous', color: 'danger-color'});\n }\n if (this.props.acs) {\n if (this.props.showMode) {\n badges.push({name: this.props.acs.getMode(), key: 'mode'});\n }\n if (this.props.acs.isMuted()) {\n icon_badges.push({icon: 'muted'});\n }\n if (!this.props.acs.isJoiner()) {\n icon_badges.push({icon: 'banned'});\n }\n }\n\n // The this.props.preview contains alreay shortened Drafty or string.\n let preview;\n if (typeof this.props.preview == 'string') {\n preview = this.props.preview;\n } else if (Drafty.isValid(this.props.preview)) {\n preview = React.createElement(React.Fragment, null, Drafty.format(this.props.preview, previewFormatter,\n {formatMessage: this.props.intl.formatMessage, previewIsResponse: this.props.previewIsResponse}));\n } else if (this.props.preview) {\n preview =\n <>warning_amber \n \n ;\n }\n\n const icon = deliveryMarker(this.props.received);\n const marker = icon ? {icon.name} : null;\n const titleClass = 'contact-title' + (this.props.deleted ? ' deleted' : '');\n\n return (\n
  • \n
    \n \n {this.props.deleted ? cancel :\n this.props.showOnline ? :\n (this.props.showCheckmark && this.props.selected) ?\n check_circle\n : null}\n
    \n
    \n
    {title}\n {this.props.isChannel ? \"channel\" : null}\n \n {!this.props.deleted ? : null}\n
    \n {this.props.showMode ?\n :\n this.props.small ? null :
    {marker}{preview || this.props.comment || '\\u00A0'}
    }\n
    \n {this.props.showContextMenu ?\n \n \n expand_more\n \n : null}\n
  • \n );\n }\n};\n\nexport default injectIntl(Contact);\n","// Context Menu: popup/dropdown menu.\nimport React from 'react';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nimport { REM_SIZE } from '../config.js';\n\nconst messages = defineMessages({\n info: {\n id: 'menu_item_info',\n defaultMessage: 'Info',\n description: 'Show extended topic information'\n },\n clear_messages: {\n id: 'menu_item_clear_messages',\n defaultMessage: 'Clear messages',\n description: 'Delete all messages'\n },\n clear_for_all: {\n id: 'menu_item_clear_messages_for_all',\n defaultMessage: 'Clear for All',\n description: 'Delete all message(s) for all members'\n },\n delete: {\n id: 'menu_item_delete',\n defaultMessage: 'Delete',\n description: 'Delete selected messages'\n },\n delete_for_all: {\n id: 'menu_item_delete_for_all',\n defaultMessage: 'Delete for All',\n description: 'Delete selected message(s) for all members'\n },\n send_retry: {\n id: 'menu_item_send_retry',\n defaultMessage: 'Retry',\n description: 'Retry sending message'\n },\n mute: {\n id: 'menu_item_mute',\n defaultMessage: 'Mute',\n description: 'Turn off notifications'\n },\n unmute: {\n id: 'menu_item_unmute',\n defaultMessage: 'Unmute',\n description: 'Turn notifications on'\n },\n reply: {\n id: 'menu_item_reply',\n defaultMessage: 'Reply',\n description: 'Reply to message'\n },\n forward: {\n id: 'menu_item_forward',\n defaultMessage: 'Forward',\n description: 'Forward message'\n },\n topic_delete: {\n id: 'menu_item_delete_topic',\n defaultMessage: 'Delete',\n description: 'Delete entire topic'\n },\n topic_delete_warning: {\n id: 'topic_delete_warning',\n defaultMessage: 'Are you sure you want to delete this conversation? It cannot be undone.',\n description: 'Alert warning when deleting entire topic'\n },\n delete_messages_warning: {\n id: 'delete_messages_warning',\n defaultMessage: 'Are you sure you want to delete all messages for everyone? It cannot be undone.',\n description: 'Alert dialog warning when hard-deleting all messages.'\n },\n unblock: {\n id: 'menu_item_unblock',\n defaultMessage: 'Unblock',\n description: 'Unblock topic or user'\n },\n // Generic string suitable for either topic or user.\n block: {\n id: 'menu_item_block',\n defaultMessage: 'Block',\n description: 'Block topic or user'\n },\n topic_block_warning: {\n id: 'topic_block_warning',\n defaultMessage: 'Are you sure you want to block this conversation?',\n description: 'Alert warning when blocking a topic.'\n },\n member_delete: {\n id: 'menu_item_member_delete',\n defaultMessage: 'Remove',\n description: 'Remove user from topic'\n },\n archive: {\n id: 'menu_item_archive_topic',\n defaultMessage: 'Archive',\n description: 'Move topic from the list of active chats to archive'\n },\n unarchive: {\n id: 'menu_item_restore_topic',\n defaultMessage: 'Restore',\n description: 'Restore topic from archive'\n },\n edit_permissions: {\n id: 'menu_item_edit_permissions',\n defaultMessage: 'Edit permissions',\n description: 'Menu item [Edit permissions]'\n },\n clear_messages_warning: {\n id: 'clear_messages_warning',\n defaultMessage: 'Are you sure you want to clear all messages? It cannot be undone.',\n description: 'Alert dialog warning when deleting all messages.'\n },\n});\n\nclass ContextMenu extends React.Component {\n constructor(props) {\n super(props);\n\n this.selfRef = React.createRef();\n\n const {formatMessage} = props.intl;\n\n this.handlePageClick = this.handlePageClick.bind(this);\n this.handleEscapeKey = this.handleEscapeKey.bind(this);\n this.handleClick = this.handleClick.bind(this);\n\n // Preconfigured menu items.\n this.MenuItems = {\n 'topic_info': {\n id: 'topic_info',\n title: formatMessage(messages.info),\n handler: null\n },\n 'messages_clear': {\n id: 'messages_clear',\n title: formatMessage(messages.clear_messages),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_messages), // title\n formatMessage(messages.clear_messages_warning), // content\n (_ => { this.deleteMessages(true, false, params, errorHandler); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'messages_clear_hard': {\n id: 'messages_clear_hard',\n title: formatMessage(messages.clear_for_all),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_for_all), // title\n formatMessage(messages.delete_messages_warning), // content\n (_ => { return this.deleteMessages(true, true, params, errorHandler); }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'message_delete': {\n id: 'message_delete',\n title: formatMessage(messages.delete),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, false, params, errorHandler);\n }\n },\n 'message_delete_hard': {\n id: 'message_delete_hard',\n title: formatMessage(messages.delete_for_all),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, true, params, errorHandler);\n }\n },\n 'menu_item_send_retry': {\n id: 'menu_item_send_retry',\n title: formatMessage(messages.send_retry),\n handler: (params, errorHandler) => {\n return this.retryMessage(params, errorHandler);\n }\n },\n 'menu_item_reply': {\n id: 'menu_item_reply',\n title: formatMessage(messages.reply),\n handler: (params, errorHandler) => {\n return this.replyToMessage(params, errorHandler);\n }\n },\n 'menu_item_forward': {\n id: 'menu_item_forward',\n title: formatMessage(messages.forward),\n handler: () => {} /* the action is taken directly in tinode-web */\n },\n 'topic_unmute': {\n id: 'topic_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'topic_mute': {\n id: 'topic_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'topic_unblock': {\n id: 'topic_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n 'topic_block': {\n id: 'topic_block',\n title: formatMessage(messages.block),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.block), // title\n formatMessage(messages.topic_block_warning), // content\n (() => {\n return this.topicPermissionSetter('-JP', params, errorHandler).then((ctrl) => {\n this.props.onTopicRemoved(params.topicName);\n return ctrl;\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_delete': {\n id: 'topic_delete',\n title: formatMessage(messages.topic_delete),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.topic_delete), // title\n formatMessage(messages.topic_delete_warning), // content\n (() => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.delTopic(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_archive': {\n id: 'topic_archive',\n title: formatMessage(messages.archive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'topic_restore': {\n id: 'topic_restore',\n title: formatMessage(messages.unarchive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(false).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n // menu_item_edit_permissions is defined elsewhere.\n 'permissions': {\n id: 'permissions',\n title: formatMessage(messages.edit_permissions),\n handler: null\n },\n 'member_delete': {\n id: 'member_delete',\n title: formatMessage(messages.member_delete),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic || !params.user) {\n console.warn(\"Topic or user not found: '\" + params.topicName + \"', '\" + params.user + \"'\");\n return;\n }\n return topic.delSubscription(params.user).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'member_mute': {\n id: 'member_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'member_unmute': {\n id: 'member_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'member_block': {\n id: 'member_block',\n title: formatMessage(messages.block),\n handler: this.topicPermissionSetter.bind(this, '-JP')\n },\n 'member_unblock': {\n id: 'member_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n };\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handlePageClick, false);\n document.addEventListener('keyup', this.handleEscapeKey, false);\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handlePageClick, false);\n document.removeEventListener('keyup', this.handleEscapeKey, false);\n }\n\n handlePageClick(e) {\n if (this.selfRef.current.contains(e.target)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n }\n\n handleEscapeKey(e) {\n if (e.keyCode === 27) {\n this.props.hide();\n }\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n let item = this.props.items[e.currentTarget.dataset.id];\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n\n if (!item) {\n console.error(\"Invalid menu item ID\", e.currentTarget.dataset.id);\n } else {\n this.props.onAction(\n item.id,\n item.handler(this.props.params, this.props.onError),\n this.props.params);\n }\n }\n\n // Menu Actions\n\n deleteMessages(all, hard, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n\n // We don't know if the message is still pending (e.g. attachment is being uploaded),\n // so try cancelling first. No harm if we can't cancel.\n // The message can be cancelled if transmission to the server has not\n // started yet or if the message send has failed.\n if (!all && topic.cancelSend(params.seq)) {\n return;\n }\n // Can't cancel. Delete instead.\n const promise = all ?\n topic.delMessagesAll(hard) :\n topic.delMessagesList([params.seq], hard);\n\n return promise.catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Retries sending failed message.\n retryMessage(params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n // Remove the existing message entry.\n if (!topic || !topic.flushMessage(params.seq)) {\n return;\n }\n const msg = topic.createMessage(params.content, false);\n return topic.publishDraft(msg).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Function is used by context menu to set permissions.\n topicPermissionSetter(mode, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found\", params.topicName);\n return;\n }\n\n let result = topic.updateMode(params.user, mode);\n if (errorHandler) {\n result = result.catch((err) => {\n errorHandler(err.message, 'err');\n });\n }\n return result;\n }\n\n replyToMessage(params, errorHandler) {\n params.pickReply(params.seq, params.content, params.userFrom, params.userName, errorHandler);\n }\n\n render() {\n const menu = [];\n let count = 0;\n this.props.items.map((item) => {\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n if (item && item.title) {\n menu.push(\n item.title == '-' ?\n
  • \n :\n
  • {item.title}
  • \n );\n }\n count++;\n });\n\n // Ensure that menu is inside the app-container.\n const hSize = 12 * REM_SIZE;\n const vSize = REM_SIZE * (0.7 + menu.length * 2.5);\n const left = (this.props.bounds.right - this.props.clickAt.x < hSize) ?\n (this.props.clickAt.x - this.props.bounds.left - hSize) :\n (this.props.clickAt.x - this.props.bounds.left);\n const top = (this.props.bounds.bottom - this.props.clickAt.y < vSize) ?\n (this.props.clickAt.y - this.props.bounds.top - vSize) :\n (this.props.clickAt.y - this.props.bounds.top);\n\n const position = {\n left: left + 'px',\n top: top + 'px'\n };\n\n return (\n
      \n {menu}\n
    \n );\n }\n}\n\nexport default injectIntl(ContextMenu);\n","// Image zoom and crop widget.\n\nimport React from 'react';\n\nconst DEFAULT_MAX_ZOOM = 2.5;\n\nexport default class Cropper extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // Coordinates of the top left corner of the image in container coordinates.\n panX: 0,\n panY: 0,\n // Origin of the zoom in image coordinates.\n originX: 0,\n originY: 0,\n // Zoom scale.\n zoom: 1,\n // Zoom min and max.\n minZoom: 0,\n maxZoom: DEFAULT_MAX_ZOOM,\n };\n\n // References to DOM elements for hooking up events and getting screen dimensions.\n // The transparent element which captures mouse moves (moves with the image).\n this.overlay = React.createRef();\n // The image cutout window or view port (static).\n this.cutout = React.createRef();\n // Scaled and translated image preview.\n this.preview = React.createRef();\n // The main container (static).\n this.boundingBox = React.createRef();\n\n // The original image width and height before any scaling.\n this.imageWidth = 0;\n this.imageHeight = 0;\n\n // Mouse position when dragging.\n this.mouseX = 0\n this.mouseY = 0;\n // Length of the previous mouse move when dragging.\n this.prevDistance = 0;\n\n // Bounding rectangles of static elements.\n this.cutoutRect = {};\n this.bBoxRect = {};\n // Center of the bounding box.\n this.originX = 0;\n this.originY = 0;\n\n this.initScaling = this.initScaling.bind(this);\n this.onZoom = this.onZoom.bind(this);\n this.handleZoom = this.handleZoom.bind(this);\n this.mouseDown = this.mouseDown.bind(this);\n this.mouseUp = this.mouseUp.bind(this);\n this.mouseMove = this.mouseMove.bind(this);\n this.mouseTouch = this.mouseTouch.bind(this);\n this.positionAll = this.positionAll.bind(this);\n this.translate = this.translate.bind(this);\n }\n\n componentDidMount() {\n this.overlay.current.addEventListener('mousedown', this.mouseDown, { passive: true });\n this.overlay.current.addEventListener('touchstart', this.mouseDown, { passive: true });\n\n // The rectangle position is in viewport coordinates.\n this.bBoxRect = this.boundingBox.current.getBoundingClientRect();\n // Center of the bounding box in container coordinates.\n this.originX = this.bBoxRect.width / 2;\n this.originY = this.bBoxRect.height / 2;\n\n // The rectangle position is in viewport coordinates.\n this.cutoutRect = this.cutout.current.getBoundingClientRect();\n }\n\n componentWillUnmount() {\n this.overlay.current.removeEventListener('mousedown', this.mouseDown);\n this.overlay.current.removeEventListener('touchstart', this.mouseDown);\n }\n\n // Position all elements.\n positionAll(panX, panY, zoom) {\n // Zoom origin in image preview coordinates.\n this.setState({\n panX: panX,\n panY: panY,\n zoom: zoom,\n originX: this.originX - panX,\n originY: this.originY - panY,\n });\n\n // Pass cut out coordinates to caller.\n const left = (this.originX - panX) * zoom - this.originX;\n const top = (this.originY - panY) * zoom - this.originY;\n this.props.onChange(\n (left + this.cutoutRect.left - this.bBoxRect.left) / zoom,\n (top + this.cutoutRect.top - this.bBoxRect.top) / zoom,\n this.cutoutRect.width / zoom,\n this.cutoutRect.height / zoom,\n zoom);\n }\n\n // Check if new location is within the limits.\n static checkBound(currPan, img, cutout, delta) {\n let nextDiff = Math.min(0, cutout[0] - img[0] - delta, img[1] - cutout[1] + delta);\n if (nextDiff == 0) {\n // Cutout is completely within the image.\n currPan += delta;\n } else if (Math.min(0, cutout[0] - img[0], img[1] - cutout[1]) < nextDiff) {\n // Cutout is outside of the range but closer to the bound.\n currPan += delta;\n }\n return currPan;\n }\n\n initScaling() {\n // Initialize components.\n const imgRect = this.preview.current.getBoundingClientRect();\n\n this.imageWidth = imgRect.width;\n this.imageHeight = imgRect.height;\n\n // Set zoom slider's min and max values. Make sure the scaled image cannot be smaller than the cutout.\n const minZoom = Math.max(this.cutoutRect.width / imgRect.width, this.cutoutRect.height / imgRect.height);\n this.setState({\n minZoom: minZoom,\n maxZoom: Math.max(DEFAULT_MAX_ZOOM, minZoom + 1)\n });\n\n // Initial zoom level fills the bounding box at the smallest image dimension and overflows the largest, i.e. \"fill\" not \"fit\".\n const zoom = Math.max(this.bBoxRect.width / imgRect.width, this.bBoxRect.height / imgRect.height);\n // Converting from viewport coordinates to container, then panning.\n const panX = this.cutoutRect.left - this.bBoxRect.left -\n (imgRect.width - this.cutoutRect.width) / 2;\n const panY = this.cutoutRect.top - this.bBoxRect.top -\n (imgRect.height - this.cutoutRect.height) / 2;\n\n this.positionAll(panX, panY, zoom);\n }\n\n onZoom(e) {\n this.handleZoom(e.target.value);\n }\n\n handleZoom(zoom) {\n let panX = this.state.panX;\n let panY = this.state.panY;\n\n // Ensure that the image at the new zoom is not outside of the cutout boundaries.\n // Calculate image coordinates at the new zoom.\n const imgLeft = this.originX - (this.originX - panX) * zoom;\n const imgRight = imgLeft + this.imageWidth * zoom;\n // Cutout in the same coordinates as the image.\n const coLeft = this.cutoutRect.left - this.bBoxRect.left;\n const coRight = coLeft + this.cutoutRect.width;\n if (coLeft < imgLeft) {\n panX -= imgLeft - coLeft;\n } else if (coRight > imgRight) {\n panX += coRight - imgRight;\n }\n const imgTop = this.originY - (this.originY - panY) * zoom;\n const imgBottom = imgTop + this.imageHeight * zoom;\n const coTop = this.cutoutRect.top - this.bBoxRect.top;\n const coBottom = coTop + this.cutoutRect.height;\n if (coTop < imgTop) {\n panY -= imgTop - coTop;\n } else if (coBottom > imgBottom) {\n panY += coBottom - imgBottom;\n }\n\n this.positionAll(panX, panY, zoom);\n }\n\n mouseDown(e) {\n if (e.touches) {\n this.mouseX = e.touches[0].pageX;\n this.mouseY = e.touches[0].pageY;\n } else {\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n }\n\n window.addEventListener('mousemove', this.mouseMove, { passive: false });\n window.addEventListener('touchmove', this.mouseTouch, { passive: false });\n window.addEventListener('mouseup', this.mouseUp, { passive: true });\n window.addEventListener('touchend', this.mouseUp, { passive: true });\n // Disable text selection in the entire document.\n document.body.style['userSelect'] = 'none';\n }\n\n // Perform image panning.\n translate(pageX, pageY) {\n const dX = pageX - this.mouseX;\n const dY = pageY - this.mouseY;\n\n this.mouseX = pageX;\n this.mouseY = pageY;\n\n // Make sure the image is within the cutout window.\n const imgRect = this.preview.current.getBoundingClientRect();\n\n // Check if the new position is within the boundaries, and if not if it's closer to them.\n let panX = Cropper.checkBound(this.state.panX, [imgRect.left, imgRect.right],\n [this.cutoutRect.left, this.cutoutRect.right], dX);\n let panY = Cropper.checkBound(this.state.panY, [imgRect.top, imgRect.bottom],\n [this.cutoutRect.top, this.cutoutRect.bottom], dY);\n\n this.positionAll(panX, panY, this.state.zoom);\n }\n\n // Image panning.\n mouseMove(e) {\n e.preventDefault();\n this.translate(e.pageX, e.pageY);\n }\n\n mouseTouch(e) {\n e.preventDefault();\n\n if (e.touches.length == 1) {\n this.translate(e.touches[0].pageX, e.touches[0].pageY);\n return;\n }\n\n // Image zooming by pinching.\n const [touch0, touch1] = e.touches;\n const distance = Math.sqrt((touch0.pageX - touch1.pageX) * (touch0.pageX - touch1.pageX) +\n (touch0.pageY - touch1.pageY) * (touch0.pageY - touch1.pageY));\n\n if (!this.prevDistance) {\n this.prevDistance = distance / this.state.zoom;\n }\n\n let scale = (distance / this.prevDistance);\n this.handleZoom(Math.max(this.minZoom, Math.min(this.maxZoom, scale)));\n }\n\n mouseUp(e) {\n window.removeEventListener('mousemove', this.mouseMove);\n window.removeEventListener('touchmove', this.mouseTouch);\n window.removeEventListener('mouseup', this.mouseUp);\n window.removeEventListener('touchend', this.mouseUp);\n // Re-enable text selection.\n document.body.style['userSelect'] = '';\n\n this.positionAll(this.state.panX, this.state.panY, this.state.zoom);\n }\n\n render() {\n // transform3d: position and scale.\n const t3d = `translate3d(${this.state.panX}px, ${this.state.panY}px, 0) scale(${this.state.zoom})`;\n // transformOrigin: zoom origin.\n const orig = `${this.state.originX}px ${this.state.originY}px`;\n\n // Overlay position and size are exactly equal to the position and size of the transformed image\n // except it uses different coordinates.\n const overlay = {\n top: `${this.originY - this.state.originY * this.state.zoom}px`,\n left: `${this.originX - this.state.originX * this.state.zoom}px`,\n width: `${this.imageWidth * this.state.zoom}px`,\n height: `${this.imageHeight * this.state.zoom}px`\n };\n return (\n
    \n
    \n \"\"\n\n
    \n
    \n
    \n
    \n \n
    \n
    \n );\n }\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport SendMessage from '../widgets/send-message.jsx';\n\nimport { bytesToHumanSize, shortenFileName } from '../lib/strformat.js';\n\n// Get material icon name from mime type.\nfunction iconFromMime(mime) {\n // If more icons become available in material icons, add them to this mime-to-icon mapping.\n const mimeToIcon = {default: 'insert_drive_file', image: 'image', text: 'description', video: 'theaters'};\n\n return mimeToIcon[mime] || mimeToIcon[(mime || '').split('/')[0]] || mimeToIcon['default'];\n}\n\nexport default class DocPreview extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleSendDoc = this.handleSendDoc.bind(this);\n }\n\n handleSendDoc(caption) {\n this.props.onClose();\n this.props.onSendMessage(this.props.content.file);\n }\n\n render() {\n if (!this.props.content) {\n return null;\n }\n return (\n
    \n \n
    \n
    \n {iconFromMime(this.props.content.type)}\n
    {shortenFileName(this.props.content.name, 24) || '-'}
    \n
    {this.props.content.type || 'application/octet-stream'}
    \n
    {bytesToHumanSize(this.props.content.size)}
    \n
    \n
    \n \n
    \n );\n }\n};\n","import React from 'react';\n\nimport MenuCancel from './menu-cancel.jsx';\n\nexport default class ErrorPanel extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n show: false,\n };\n\n this.hide = this.hide.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.level !== this.props.level) {\n this.setState({\n show: !(!this.props.level)\n });\n }\n }\n\n hide() {\n this.setState({show: false});\n if (this.props.onClearError) {\n this.props.onClearError();\n }\n }\n\n render() {\n const icons = {err: 'error', warn: 'warning', info: 'info'}\n const level = icons[this.props.level] || '';\n const className = 'info-box ' + level;\n return (\n
    \n
    {level}
    \n \n {this.props.text}\n {this.props.action ?\n <>\n {e.preventDefault(); this.props.action();}}>\n {this.props.actionText}\n \n \n : null}\n \n
    \n
    \n );\n }\n};\n","// File uload/download progress indicator with a cancel inside.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class FileProgress extends React.PureComponent {\n render() {\n return (\n
    \n
    \n {this.props.progress < 0.999 ?\n {e.preventDefault(); this.props.onCancel();}}>\n close \n \n :\n \n }\n
    \n );\n }\n}\n","// Forward Menu: message forwarding popup/dropdown menu.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport ContactList from './contact-list.jsx';\nimport SearchContacts from './search-contacts.jsx';\n\nexport default class ForwardDialog extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n query: null\n };\n\n this.handleEscapeKey = this.handleEscapeKey.bind(this);\n this.handleClose = this.handleClose.bind(this);\n\n this.handleSearchContacts = this.handleSearchContacts.bind(this);\n this.handleContactSelected = this.handleContactSelected.bind(this);\n }\n\n componentDidMount() {\n this.props.onInitFind();\n }\n\n handleEscapeKey(e) {\n if (e.keyCode === 27) {\n // Not forwarding the message.\n this.props.hide(false);\n }\n }\n\n handleClose(e) {\n e.preventDefault();\n this.props.hide(false);\n }\n\n handleSearchContacts(query) {\n this.setState({ query: Tinode.isNullValue(query) ? null : query });\n this.props.onSearchContacts(query);\n }\n\n handleContactSelected(uid) {\n this.props.onTopicSelected(uid);\n this.props.hide(true);\n }\n\n render() {\n let contacts = this.state.query != null ? this.props.searchResults : this.props.contacts;\n // Filter out contacts without a 'W' or 'J' permissions as well as the current topic.\n contacts = contacts.filter((c) => {\n return (c.name != this.props.topicSelected) && c.acs.isJoiner() && c.acs.isWriter();\n });\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n {\n (search_placeholder) => \n }\n {\n (not_found_placeholder) => \n }\n
    \n
    \n );\n }\n}\n","// GroupMembers: control for managing a list of group members.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport ChipInput from './chip-input.jsx';\nimport ContactList from './contact-list.jsx';\n\nconst messages = defineMessages({\n no_contacts: {\n id: 'no_contacts',\n defaultMessage: 'You have no contacts :-(',\n description: 'Shown in ContactsView when the user has no contacts'\n },\n contacts_not_found_short: {\n id: 'contacts_not_found_short',\n defaultMessage: \"No contacts match ''{query}''\",\n description: 'Shown in ContactsView when search returned no results'\n }\n});\n\nclass GroupManager extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // Array of topic members\n members: props.members,\n index: GroupManager.indexMembers(props.members),\n staticMembers: GroupManager.staticMembers(props.members, props.keepInitialMembers, props.requiredMember),\n contactFilter: '',\n noContactsMessage: props.intl.formatMessage(messages.no_contacts),\n selectedContacts: GroupManager.selectedContacts(props.members)\n };\n\n this.handleContactSelected = this.handleContactSelected.bind(this);\n this.handleMemberRemoved = this.handleMemberRemoved.bind(this);\n this.handleContactFilter = this.handleContactFilter.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n static indexMembers(members) {\n let index = {};\n members.map((m) => {\n index[m.user] = {delta: 0, present: true}; // Delta: 0 unchanged, +1 added, -1 removed\n });\n return index;\n }\n\n static staticMembers(members, keepInitial, requiredMember) {\n let stat = [];\n members.map((m) => {\n if (keepInitial || m.user == requiredMember) {\n stat.push(m.user);\n }\n });\n return stat;\n }\n\n static selectedContacts(members) {\n let sel = [];\n members.map((m) => {\n sel.push(m.user);\n });\n return sel;\n }\n\n handleContactSelected(userId, index) {\n let status = this.state.index[userId];\n if (status) {\n if (status.present) {\n // Prevent duplicate members\n return;\n }\n status.delta += 1;\n status.present = true;\n } else {\n status = {delta: 1, present: true};\n }\n\n let m = this.state.members.slice();\n m.push(this.props.contacts[index]);\n\n const sel = GroupManager.selectedContacts(m);\n\n const i = this.state.index;\n i[userId] = status;\n\n this.setState({members: m, index: i, selectedContacts: sel});\n }\n\n handleMemberRemoved(userId, index) {\n const status = this.state.index[userId];\n if (!status || !status.present) {\n return;\n }\n status.present = false;\n status.delta -= 1;\n\n let m = this.state.members.slice();\n m.splice(index, 1);\n\n const sel = GroupManager.selectedContacts(m);\n\n const i = this.state.index;\n i[userId] = status;\n\n this.setState({members: m, index: i, selectedContacts: sel});\n }\n\n handleContactFilter(val) {\n const {formatMessage} = this.props.intl;\n const msg = !val ?\n formatMessage(messages.no_contacts) :\n formatMessage(messages.contacts_not_found_short, {query: val});\n\n this.setState({contactFilter: val, noContactsMessage: msg});\n }\n\n static doContactFiltering(filter, values) {\n if (filter) {\n for (let i=0; i= 0) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n\n handleSubmit() {\n var instance = this;\n var members = [];\n var added = [];\n var removed = [];\n\n var keys = Object.keys(this.state.index);\n keys.map(function(k) {\n if (instance.state.index[k].present) {\n members.push(k);\n }\n\n if (instance.state.index[k].delta > 0) {\n added.push(k);\n } else if (instance.state.index[k].delta < 0) {\n removed.push(k);\n }\n });\n this.props.onSubmit(members, added, removed);\n }\n\n handleCancel() {\n this.props.onCancel();\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n \n \n
    \n
    \n );\n }\n};\n\nexport default injectIntl(GroupManager);\n","// GroupSubs: a list of group subscribers currently online.\n// Show in the topic title bar\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { MAX_ONLINE_IN_TOPIC } from '../config.js'\n\nimport LetterTile from './letter-tile.jsx';\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\nexport default class GroupSubs extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const usersOnline = [];\n const totalCount = (this.props.subscribers || []).length;\n const countToShow = Math.min(MAX_ONLINE_IN_TOPIC, totalCount);\n\n (this.props.subscribers || []).some((sub) => {\n usersOnline.push(\n
    \n \n
    \n );\n return usersOnline.length == countToShow;\n });\n\n return (\n
    {usersOnline} {totalCount > countToShow ?\n \n \n : null}\n
    \n );\n }\n};\n","import React from 'react';\n\nimport { KNOWN_HOSTS } from '../config.js';\n\n/* Combobox for selecting host name */\n\nexport default class HostSelector extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n hostName: props.serverAddress,\n changed: false\n };\n\n this.handleHostNameChange = this.handleHostNameChange.bind(this);\n this.handleEditingFinished = this.handleEditingFinished.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n handleHostNameChange(e) {\n this.setState({hostName: e.target.value, changed: true});\n }\n\n handleEditingFinished() {\n if (this.state.changed) {\n this.setState({changed: false});\n this.props.onServerAddressChange(this.state.hostName.trim());\n }\n }\n\n handleKeyDown(e) {\n if (e.key == 'Enter') {\n this.handleEditingFinished();\n }\n }\n\n render() {\n var hostOptions = [];\n for (let key in KNOWN_HOSTS) {\n let item = KNOWN_HOSTS[key];\n hostOptions.push(\n